2013-07-05 20 views
12

我是初學者JSON文件,這是我的代碼,請幫我解決這個錯誤。如何解決JSON.parse:字符串文字中的控制字符錯誤,在此代碼中

{ 
    "_id" : "_design/utilisateur", 
    "_rev" : "1-967a00dff5e02add41819138abb3284d", 
    "views" : { 
    "tous" : { 
     "map" : "function(doc){if (doc.role=='utilisateur') {emit (doc._id,  [['t0',doc.distancet0],['t1',doc.distancet1],['t2',doc.distancet2],['t3',doc.distancet3], ['t4',doc.distancet4]])}}" 
     }, 

    "3500" : { 
     "map" : "function(doc) {if (doc.role=='utilisateur' &&  doc.distancet0<3500) {emit(doc._id,doc.distancet0)}}" 
     }, 

     "distancetot" : { 
       "map" : "function(doc) {var somme= Math.abs(doc.distancet0- doc.distancet1); if(doc.role=='utilisateur'){ 
    emit(doc._id, somme); 
}}" 
          }  
}   

} 
+3

聽起來像你需要使你的JSON有效。你不明白錯誤信息嗎?該錯誤甚至應該告訴你它發生了什麼。如果您需要任何幫助,請向我們展示您的JSON文檔。 – Bergi

+2

向我們顯示您的代碼? –

+0

有關您編寫的代碼問題的問題必須**描述特定問題**幷包含有效代碼以進行重現。請參閱[SSCCE.org](http://sscce.org/)獲取指導。 –

回答

32

該錯誤消息告訴你,你有一個字符串內的控制字符,例如,字符碼8或10或13或低於32的任何(一個空格)。

The JSON definition告訴我們,你不能有文字控制字符的字符串常量,則必須使用轉義序列,如\b\r\n,或\uXXXX其中XXXX是一個Unicode「碼點」十六進制代碼(字) 。

因此,例如,假裝下面是一個文件(或其他數據流):

{ 
    "property": "value with an invalid 
control character in it" 
} 

這是無效的JSON,字符串文字開始"value中有至少一個控制字符(行根據操作系統的不同,可能是一個或兩個控制字符)。

這就是我們將如何解決這個問題:

{ 
    "property": "value with an valid\nescape sequence in it" 
} 

記下斷行曾經是\n

您可以使用http://jsonlint.com來驗證JSON,它很好地指出錯誤的位置。


回覆您的編輯:這的確是一個換行符造成問題的原因:

"distancetot": { 
    "map": "function(doc) {var somme= Math.abs(doc.distancet0- doc.distancet1); if(doc.role=='utilisateur'){ 
Error is here -------------------------------------------------------------------------------------------------^ 

if(doc.role=='utilisateur'){後的換行是無效的控制字符,就像上面我的例子。

+0

謝謝你有用,它現在有效:) – user2553396

+0

完成,你很慷慨 – user2553396

相關問題