2013-07-05 33 views
12

Tôi là người mới bắt đầu tại JSON tài liệu, đây là mã của tôi vì vậy hãy giúp tôi giải quyết lỗi này.Cách giải quyết JSON.parse: ký tự điều khiển xấu trong chuỗi chữ, trong mã này

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

Có vẻ như bạn cần phải làm cho JSON của mình hợp lệ. Bạn không hiểu thông báo lỗi? Các lỗi thậm chí sẽ cho bạn biết nơi nó xảy ra. Nếu bạn muốn bất kỳ trợ giúp nào, hãy cho chúng tôi xem tài liệu JSON của bạn. – Bergi

+2

Hiển thị mã cho chúng tôi? –

+0

Các câu hỏi liên quan đến các vấn đề với mã bạn đã viết phải ** mô tả vấn đề cụ thể ** và bao gồm mã hợp lệ để tạo lại mã. Xem [SSCCE.org] (http://sscce.org/) để được hướng dẫn. –

Trả lời

32

Thông báo lỗi cho bạn biết rằng bạn có ký tự điều khiển trong chuỗi ký tự, ký tự 8 hoặc 10 hoặc 13 hoặc bất kỳ thứ gì dưới 32 (khoảng trắng).

The JSON definition cho chúng ta biết rằng bạn không thể có ký tự điều khiển chữ trong xâu, bạn phải sử dụng một dãy thoát như \b, \r, \n, hoặc \uXXXX nơi XXXX là một mã hex cho một Unicode "điểm mã" (ký tự) .

Vì vậy, ví dụ, giả vờ sau đây là trong một tập tin (hoặc dòng dữ liệu khác):

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

Đó là không hợp lệ JSON, chuỗi chữ bắt đầu với "value có ít nhất một ký tự điều khiển trong đó (dòng ngắt, có thể là một hoặc hai ký tự điều khiển tùy thuộc vào hệ điều hành).

Đây là cách chúng tôi sẽ sửa chữa nó:

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

Lưu ý \n nơi ngắt dòng sử dụng để được.

Bạn có thể sử dụng http://jsonlint.com để xác thực JSON, thật tốt khi chỉ ra vị trí của lỗi.


Re chỉnh sửa của bạn: Nó thực sự là một ngắt dòng gây ra vấn đề:

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

Các ngắt dòng sau if(doc.role=='utilisateur'){ là một ký tự điều khiển không hợp lệ, cũng giống như trong ví dụ của tôi ở trên.

+0

cảm ơn bạn đã hữu ích, nó có giá trị bây giờ :) – user2553396

+0

xong, bạn rất hào phóng – user2553396

Các vấn đề liên quan