2010-06-28 41 views
6

Tôi muốn xóa các chuỗi được lấy từ cơ sở dữ liệu.Chuỗi làm sạch là các giá trị JSON hợp lệ

Tôi gặp sự cố này khi giá trị thuộc tính (tên từ cơ sở dữ liệu) có ký tự TAB được nhúng và Chrome đã cho tôi lỗi TOKEN không hợp lệ trong khi cố tải đối tượng JSON.

Vì vậy, bây giờ, tôi đã đi đến http://www.json.org/ và ở bên cạnh nó có đặc điểm kỹ thuật. Nhưng tôi đang gặp rắc rối tìm hiểu làm thế nào để viết một chất tẩy rửa sử dụng spec này:

chuỗi

  • ""
  • "chars"

chars

  • char
  • charchars

char

  • bất kỳ-Unicode-character- trừ - "- hay - hay- điều khiển nhân vật
  • \ "
  • \\
  • /
  • \ b
  • \ f
  • \ n
  • \ r
  • \ t
  • \ u bốn-hex-chữ số

Do một chuỗi, làm thế nào tôi có thể "làm sạch" nó như vậy mà tôi phù hợp với spec này?

Cụ thể, tôi bị nhầm lẫn: thông số có cho phép ký tự TAB (0x0900) không? Nếu vậy, tại sao Chrome đưa ra lỗi TOKEN không hợp lệ?

Trả lời

13

Tab ký tự (thực tế 0x09, không thoát) không thể xuất hiện bên trong dấu ngoặc kép trong JSON (mặc dù họ là khoảng trắng có giá trị bên ngoài của dấu ngoặc kép). Bạn sẽ cần phải thoát chúng với \t hoặc \u0009 (trước đây là thích hợp hơn).

json.org nói một nhân vật chưa thoát ra của một chuỗi phải:.

Bất kỳ nhân vật UNICODE trừ "hoặc \ hoặc kiểm soát nhân vật

Tab được tính là một nhân vật kiểm soát

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