2011-06-30 41 views
53

JSON có xử lý tất cả các giá trị này không? Hay chúng là sự kết hợp giữa số nguyên và boolean?Giá trị JSON 1 hoặc 0 - int hoặc boolean

var data = 
{ 
    "zero" : 0, 
    "one" : 1, 
    "false" : 0, 
    "true" : 1, 
    "0" : false, 
    "1" : true 
} 
+4

Bạn có nghĩa là các giá trị? Vâng, có loại Số, và đó cũng là kiểu Boolean. Do đó, những giá trị đó không giống nhau. –

+7

BTW, 'true' và' false' là các từ dành riêng, vì vậy bạn sẽ không thể sử dụng ký hiệu chấm để truy xuất các giá trị thuộc tính. Ví dụ, 'data.zero' trả về' 0', nhưng 'data.false' ném một lỗi phân tích (trong một số trình duyệt) (' data ['false'] 'sẽ hoạt động (= return' 0')). –

Trả lời

63

JSON là định dạng để truyền dữ liệu.
Nó không có khái niệm bình đẳng.

JSON trình phân tích cú pháp đối xử với các phép toán và số là các loại riêng biệt.

+49

Câu trả lời này có thể được giải thích rõ ràng hơn, theo cách này: * "Phil, bạn đề cập đến JSON, là định dạng; ý bạn là hỏi về các trình phân tích cú pháp JSON. Trên thực tế, các trình phân tích cú pháp JSON ... blah blah." * Những người giải thích hàng đầu luôn buôn bán hài hước, mỉa mai nhẹ nhàng, thẳng thắn dí dỏm dí dỏm, những người dẫn đầu đáng ngạc nhiên, và thực sự là bất kỳ loại gambit phong cách nào, tuyệt đối, toàn bộ, sức mạnh giải thích. S., tôi chỉ đạo một người đàn ông trẻ như bạn với các tác phẩm của Winston Churchill - bạn sẽ thích * Cuộc sống ban đầu của tôi *, đó là một ví dụ về ngôn ngữ chủ. Cheers – Fattie

+8

Câu trả lời này chứa đựng những gì nó cần chứa, và không có hành trình vô dụng. Trong thực tế, tôi đã rút ngắn nó thành * Việc phân tích cú pháp quyết định *. –

+21

Thật là một câu trả lời vô nghĩa - và nó thậm chí còn sai vì thực sự có một đặc tả chính thức của JSON (http://www.json.org) cho thấy các giá trị chữ 'true' và' false' khác với số. Bất kỳ trình phân tích cú pháp nào không thể phân biệt được đó không phải là một trình phân tích cú pháp JSON. –

83

Các giá trị truefalse là giá trị boolean thực, phần còn lại là số nguyên. Xem http://json.org/ để biết thêm.

+3

Liên kết tới json.org hữu ích ở đây. Tôi đã đến câu hỏi này để xem liệu JSON có sử dụng dấu ngoặc kép xung quanh các giá trị đúng hay sai. –

+14

Để giúp những người tìm thấy bài đăng này tìm kiếm cùng một thông tin, câu trả lời là "không". Không có dấu ngoặc kép nào xung quanh các giá trị 'true' và' false' trong JSON. –

7

Như đã đề cập, ở cấp JSON, 0 và sai không giống nhau; các kiểu dữ liệu là số so với boolean. Nhưng thư viện xử lý JSON có thể chọn thực hiện chuyển đổi; đặc biệt là trên các ngôn ngữ/nền tảng không có kiểu boolean gốc, ví dụ. Trong trường hợp đó, một biểu diễn khác có thể được sử dụng (chuỗi rỗng hoặc 0 cho sai). Hơn nữa, cũng có thể là các thư viện xử lý có thể ép buộc các loại: như vậy nếu một giá trị boolean được mong đợi, các giá trị số/chuỗi nhất định (hoặc JSON 'null' token) có thể được chấp nhận thay thế. Điều này khá phổ biến, do sự khác biệt về lựa chọn loại dữ liệu trên các ngôn ngữ khác nhau.

23

Tôi thích sử dụng 0/1 thay vì true/false, vì 0/1 chỉ tiêu thụ 1 byte trong khi đúng/sai tiêu thụ 4/5 byte.

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