Tôi kinh hoàng vì sự hiện diện của thông tin sai lệch được đánh giá cao về một câu hỏi được xem nhiều về một chủ đề cơ bản.
Chuỗi JSON không thể được trích dẫn với dấu ngoặc đơn . Các phiên bản khác nhau của thông số kỹ thuật ( bản gốc của Douglas Crockford, phiên bản ECMA và phiên bản IETF ) đều nêu rõ các chuỗi phải được trích dẫn bằng dấu ngoặc kép. Đây không phải là một vấn đề lý thuyết, cũng không phải là vấn đề quan điểm như câu trả lời được chấp nhận hiện đang đề xuất; bất kỳ trình phân tích cú pháp JSON nào trong thế giới thực sẽ lỗi nếu bạn cố gắng phân tích cú pháp một chuỗi trích dẫn.
Phiên bản của Crockford và ECMA thậm chí còn hiển thị định nghĩa của một chuỗi bằng một hình ảnh đẹp, điều này sẽ làm cho điểm rõ ràng rõ ràng:
Bức tranh đẹp cũng liệt kê tất cả các chuỗi thoát hợp pháp trong chuỗi JSON:
\"
\\
\/
\b
\f
\n
\r
\t
\u
theo sau là bốn chữ số
Lưu ý rằng, trái với những điều vô nghĩa trong một số câu trả lời khác ở đây, \'
không bao giờ là một chuỗi thoát hợp lệ trong chuỗi JSON. Không cần thiết, bởi vì các chuỗi JSON luôn được trích dẫn hai lần.
Cuối cùng, thông thường bạn không cần phải suy nghĩ về việc tự thoát các ký tự khi tạo JSON theo chương trình (mặc dù tất nhiên bạn sẽ làm khi chỉnh sửa thủ công, giả sử, tệp cấu hình dựa trên JSON). Thay vào đó, hình thành cấu trúc dữ liệu mà bạn muốn mã hóa bằng bất kỳ loại bản đồ, mảng, chuỗi, số, boolean và null nào mà ngôn ngữ của bạn có, sau đó mã hóa nó thành JSON bằng hàm mã hóa JSON. Một hàm như vậy có thể được tích hợp vào bất kỳ ngôn ngữ nào bạn đang sử dụng, như của JavaScript JSON.stringify
, PHP json_encode
hoặc Pythonjson.dumps
. Nếu bạn đang sử dụng ngôn ngữ không có chức năng như vậy, bạn có thể tìm thấy thư viện mã hóa và phân tích cú pháp JSON để sử dụng. Nếu bạn chỉ đơn giản sử dụng các chức năng ngôn ngữ hoặc thư viện để chuyển đổi mọi thứ sang và từ JSON, bạn thậm chí sẽ không cần phải biết các quy tắc thoát của JSON. Đây là những gì người hỏi câu hỏi sai lầm ở đây nên đã làm.