2013-07-05 7 views
12

Jestem początkującym w JSON dokumentu, to jest mój kod, więc proszę mi pomóc, aby rozwiązać ten błąd.Jak rozwiązać JSON.parse: zły znak kontrolny w literale ciąg, w tym kodzie

{ 
    "_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

Wygląda na to, że musisz ustawić JSON jako prawidłowy. Czy nie rozumiesz komunikatu o błędzie? Błąd powinien nawet powiedzieć ci, gdzie to się dzieje. Jeśli chcesz uzyskać pomoc, pokaż nam dokument JSON. – Bergi

+2

Pokaż nam swój kod? –

+0

Pytania dotyczące problemów z kodem, który napisałeś, muszą ** opisać konkretny problem ** i dołączyć poprawny kod, aby go odtworzyć. Aby uzyskać wskazówki, patrz [SSCCE.org] (http://sscce.org/). –

Odpowiedz

32

komunikat o błędzie z informacją, że masz charakter kontrolny w ciąg dosłownym, na przykład, kod postać 8 lub 10 lub 13 lub coś poniżej 32 (spacja).

The JSON definition mówi nam, że nie można mieć dosłownych znaków sterujących w napisowych, należy użyć sekwencji ucieczki, takich jak \b, \r, \n lub \uXXXX gdzie XXXX jest kod szesnastkowy dla Unicode „punkt kodowy” (znak) .

Tak na przykład udawać, po to w pliku (lub inny strumień danych):

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

To nieprawidłową JSON, ciąg dosłownego począwszy "value ma co najmniej jeden znak kontrolny w nim (wiersz break, może to być jeden lub dwa znaki kontrolne w zależności od systemu operacyjnego).

ten sposób chcemy to naprawić:

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

Zanotuj \n gdzie przerwa linia kiedyś.

Możesz użyć http://jsonlint.com do sprawdzenia poprawności JSON, całkiem dobrze jest wskazać, gdzie jest błąd.


Re swojej EDIT: To jest rzeczywiście przerwa linia powoduje problem:

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

Przerwa linia po if(doc.role=='utilisateur'){ jest nieprawidłowy znak kontrolny, tak jak w moim przykładzie powyżej.

+0

dziękuję, że było użyteczne, teraz jest ważne :) – user2553396

+0

zrobione, jesteś bardzo hojny – user2553396

Powiązane problemy