Trong JSON, 6
là số sáu. "6"
là một chuỗi chứa chữ số6
. Vì vậy, câu trả lời cho câu hỏi "Số json có thể được trích dẫn không?" về cơ bản là "không", bởi vì nếu bạn đặt chúng trong dấu ngoặc kép, chúng không phải là số nữa.
Nhưng, các trình phân tích cú pháp có chấp nhận cả hai "attr": 6 và attr: "6" không?
Ví dụ thứ hai là không hợp lệ, vì attr
phải nằm trong dấu ngoặc kép, ví dụ:
{"attr": "6"}
... là hợp lệ, và xác định một đối tượng với một tài sản gọi là attr
với chuỗi giá trị"6"
, trong khi:
{"attr": 6}
... hợp lệ và xác định đối tượng có thuộc tính được gọi là.210 với giá trị số6
, và cuối cùng là:
{attr: 6}
... và
{attr: "6"}
... đều JSON không hợp lệ vì tên thuộc tính phải nằm trong dấu ngoặc kép.
Nếu MyParser có phương thức getInt để lấy số cho khóa, nên MyParser.getInt ("attr") trả về 6 trong cả hai trường hợp hoặc ném ngoại lệ trong trường hợp sau?
Đó là một quyết định thiết kế cho người cung cấp các phân tích cú pháp, về cơ bản là sự lựa chọn giữa getInt
là nghiêm ngặt (ném một ngoại lệ nếu bạn thử nó trên "attr": "6"
) hoặc lỏng (ép buộc "6"
-6
và trở về đó). JavaScript thường bị mất, và vì vậy có thể có một lý lẽ cho việc bị mất; ngược lại, thực tế là JavaScript bị mất đôi khi gây ra rắc rối, có thể là một lý lẽ cho việc nghiêm ngặt.
Nguồn
2013-03-12 17:40:11