2015-06-18 25 views
5

Tôi chỉ mới bắt đầu học JSON:Số gõ vào đối tượng JSON

mà một trong những điều sau đây là đúng:

var json = {"age":22} // my book writes like this 

hoặc

var json = {age:22} // internet show example like this 

PHP bão tạo

argument type number is not assignable to parameter type string 

cho cả hai.

Nếu điều thứ hai đúng hiển thị sự khác biệt với đối tượng JS thì là gì.

+0

Cả hai đều đúng, dấu ngoặc kép là không cần thiết trong trường hợp này. – dfsq

+0

btw tại sao PHPstorm tạo ra cảnh báo, tôi có điên không ?? –

Trả lời

5

Vâng, bạn đang sử dụng thuật ngữ JSON, nhưng ví dụ bạn hiển thị không phải là JSON. Nếu bạn đang nói về các đối tượng JavaScript đơn giản, thì cả hai ví dụ bạn đưa ra là chính xác. Khi mọi người tham khảo JSON, chúng thường đề cập đến kiểu dữ liệu được gửi qua trao đổi máy khách/máy chủ, điều này rất cụ thể và có linters cho điều đó (xem ví dụ jsonlint). Lỗi PHPStorm không chính xác.

output

+0

cảm ơn. Vậy cái đầu tiên có thể được coi là đối tượng JS bình thường phải không? đó là lý do tại sao cả hai người trong số họ vẫn có thể in giá trị. –

+1

@hansf., Cả hai ví dụ bạn đưa ra là các đối tượng JS hoàn toàn hợp lệ. Nhưng chỉ có ví dụ đầu tiên là kiểu dữ liệu JSON (không có phần 'var whatever ='). –

+1

Cảm ơn bạn, tôi chỉ muốn tuân theo tiêu chuẩn hợp lệ, nhưng tôi tin tưởng bạn ngay bây giờ! –

1

Về cơ bản JSON là cặp giá trị quan trọng, về cơ bản nó phản đối cho dữ liệu lưu trữ

  • var json = { "tuổi": "22"}: nếu bạn sử dụng như thế này bạn có thể nhận được giá trị như json ["tuổi"] và json.age, cả hai đều hữu ích trong một số trường hợp nhất định và giá trị trả lại là chuỗi, bạn cần chuyển đổi nó (chỉ yêu cầu)
  • var json = {age: 22}: nếu bạn sử dụng điều này bạn không thể có được giá trị như json [""] định dạng, chỉ có json.age có thể được sử dụng để có được
  • var json = { "tuổi": 22} nên được tốt như sử dụng loại bạn như số lượng và hơn nữa bạn có thể lấy nó bằng cách sử json [ "tuổi"]

Các kịch bản nêu trên là đối với năng đặc và sử dụng chúng

+0

để bạn nói cả hai đều là JSON hợp lệ ?? –

+1

@hansf.theo JSON validators, var json = {"key": 22} là đúng, và nếu json của bạn có nhiều dữ liệu và looping là bắt buộc và sửa đổi dữ liệu theo nó này, như cho (var key in jsonObj) { console.log (jsonObj [key]); // giá trị bảng điều khiển trong json của bạn } –

1

Cả hai cách đều hợp lệ trong Javascript. Nhưng cần có dấu ngoặc kép trong các trường hợp cụ thể, như:

var obj = { 
    'foo bar': 0, 
    'foo-bar': 0, 
    '': 0 
} 
1

Khi làm việc với JSON trình xác thực/linter là công cụ cần thiết, đặc biệt là xử lý các tập hợp dữ liệu lớn hơn.

Gửi cả hai thông qua http://jsonlint.com/ kết quả là:

Các thẩm tra đầu tiên là hợp lệ JSON, thứ hai tiết lộ:

Parse error on line 1: 
     {age: 22} 
    -----^ 
    Expecting 'STRING', '}' 
+0

__ + 1, cảm ơn người xác thực. –

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