2012-12-10 37 views
21

Tôi đã xem mã JSON này. Tôi nhận thấy rằng nó sử dụng giá trị undefined. Tôi có thể tìm thêm thông tin về loại giá trị này ở đâu?Loại giá trị không xác định JSON

tracks:[ 
    (  { 
     codec:"h264", 
     language:undefined, 
     id:1, 
     bitrate:785236, 
     content:"video" 
    }  ), 
    (  { 
     codec:"aac", 
     language:undefined, 
     id:2, 
     bitrate:75969, 
     content:"audio" 
    }  ) 
    ], 
+2

Bạn có chắc chắn JSON là hợp lệ? Các dấu ngoặc đơn (lần đầu tiên được chú ý bởi MuraliPrasanth) trông đáng ngờ ít nhất. –

+0

Đó không phải là JSON hợp lệ. Dấu ngoặc đơn không được phép. Không phải là chữ ‘undefined'. 'undefined' là một giá trị trong javascript: http://www.ecma-international.org/ecma-262/5.1/#sec-4.3.9 –

+0

bạn có chắc đó là JSON không? Dường như một đoạn [object literal] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects) cũng vậy. –

Trả lời

46
  • không xác định không phải là một giá trị json hợp lệ, mặc dù nó có giá trị trong javascript. Từ the official json standard (ECMA-404, Phần 5):

    Một giá trị JSON có thể là một đối tượng, mảng, số, chuỗi, đúng, sai, hoặc null.

  • Đối json, sử dụng rỗng thay vì không xác định: { "something": null }

+4

Nếu bạn muốn một giá trị không được xác định, chỉ cần bỏ qua nó hoàn toàn từ JSON. Bằng cách đó, khi bạn cố đọc nó sau khi phân tích cú pháp, nó sẽ không được xác định. – totymedli

+1

Nhưng điều đó giả định bạn có kiến ​​thức đầy đủ về phản ứng sẽ trông như thế nào. Đó là tốt nếu bạn đang xây dựng cả máy chủ và khách hàng, nhưng đó thường không phải là trường hợp. – Ringo

+0

Chắc chắn. Đó không phải là một giải pháp tối ưu, chỉ là một giải pháp cho khi bạn (vì lý do gì) phải trả về một giá trị không xác định. – totymedli

4

undefined là một loại đặc biệt mà nó đơn giản chỉ ra rằng biến language không được khởi tạo hoặc có thể nó chưa được xác định.

null trong javascript chỉ đơn giản là chỉ ra sự vắng mặt của một giá trị, và nó cũng có thể được sử dụng để chỉ “không có giá trị” cho con số và chuỗi cũng như objects.The giá trị undefined cũng đại diện cho sự vắng mặt của giá trị, nó là giá trị của các các biến chưa được khởi tạo và giá trị khi bạn nhận được từ thuộc tính object hoặc array không tồn tại undefined là biến toàn cầu được xác định trước được khởi tạo thành giá trị không xác định.

nullundefined không có bất kỳ tài sản hoặc methods.In thực tế, sử dụng . hoặc [] để truy cập tài sản hoặc phương pháp của các giá trị gây ra một TypeError.

+0

Đặt một giá trị được xác định vào một biến làm cho nó không được xác định. Tùy chọn duy nhất là giá trị _undefined_ được lưu trữ trong thuộc tính đó hoặc rằng JSON không được tạo tự động. –

+0

dữ liệu thành biến ngôn ngữ không xác định –

+0

ngôn ngữ khôn ngoan, "không xác định" liên kết với toàn bộ câu trước (nếu có dấu phẩy bị thiếu) hoặc "biến ngôn ngữ", không phải "dữ liệu" (tiếp theo). Bạn đã bị hiểu lầm, tôi tin. –

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