Vì định dạng JSON chỉ định rằng không nên thoát khỏi các dấu nháy đơn, hầu hết các thư viện (hoặc thậm chí là trình phân tích cú pháp JSON gốc) sẽ thất bại nếu bạn có một dấu trích dẫn duy nhất trong nó. Bây giờ điều này thường không phải là vấn đề vì hầu hết thời gian bạn làm một XHR tìm nạp một số dữ liệu được định dạng là JSON và bạn sử dụng responseText chứa chuỗi JSON của bạn, sau đó bạn có thể phân tích cú pháp, v.v.Cách sử dụng chuỗi ký tự JSON?
Trong trường hợp cụ thể này, Tôi có một chuỗi JSON được lưu trữ trong cơ sở dữ liệu dưới dạng văn bản ... do đó cơ sở dữ liệu chứa một số thứ như {"property":"value"}
và tôi muốn xuất kết quả này như một phần của trang HTML được tạo bởi máy chủ để mã JavaScript trong trang đó trông giống như sau:
var x = '{"property":"value"}';
Bây giờ nếu chuỗi JSON trong cơ sở dữ liệu chứa một giá duy nhất như thế này:
{"property":"val'ue"}
Sau đó, tôi cần phải thoát khỏi nó, không thì anh sẽ không bao giờ có thể sử dụng nó như là một chuỗi:
console.clear();
var obj = {prop:"val'ue"};
var str = JSON.stringify(obj);
console.log("JSON string is %s",str);
console.dir(JSON.parse(str)); //No problem here
//This obviously can't work since the string is closed and it causes an invalid script
//console.dir(JSON.parse('{prop:"val'ue"}'));
//so I need to escape it to use a literal JSON string
console.dir(JSON.parse('{"prop":"val\'ue"}'));
Câu hỏi đặt ra sau đó là lý do tại sao {"prop":"val\'ue"}
không được coi là một chuỗi JSON hợp lệ?
vì vậy, vấn đề với 'console.dir (JSON.parse ('{" prop ":" val \' ue "} '))' là gì? Nó hoạt động cho tôi (chrome) – mykhal
Đúng vậy, câu hỏi của tôi là lý do tại sao nó được coi là không hợp lệ JSON {"prop": "valu \ 'ue"} (theo thông số kỹ thuật) khi ở trong tình huống tôi mô tả bạn cần để có điều này trong chuỗi của bạn. Điều này đang buộc tôi phải xử lý lại chuỗi JSON đã được mã hóa. – SBUJOLD