Tôi đã thấy các tham chiếu đến một số trình duyệt hỗ trợ phân tích cú pháp JSON/tuần tự hóa các đối tượng một cách an toàn và hiệu quả thông qua đối tượng window.JSON
. Có ai có thể chỉ đúng hướng không? Các phương pháp mà Object này phơi bày là gì? Những trình duyệt nào được hỗ trợ theo?Hỗ trợ JSON nguyên gốc của trình duyệt (window.JSON)
Trả lời
Tất cả các trình duyệt hiện đại đều hỗ trợ mã hóa/giải mã JSON gốc (Internet Explorer 8+, Firefox 3.1+, Safari 4+ và Chrome 3+). Về cơ bản, JSON.parse(str)
sẽ phân tích cú pháp chuỗi JSON trong str
và trả về một đối tượng và JSON.stringify(obj)
sẽ trả về biểu diễn JSON của đối tượng obj
.
Thêm chi tiết về số MDN article.
Tôi biết sự hỗ trợ không phổ biến, nhưng việc sử dụng phương pháp này sẽ nhanh hơn rất nhiều và an toàn hơn eval() trong một chuỗi, vì vậy tôi muốn sử dụng nó ở nơi có sẵn. Bất kỳ ý tưởng nào về hỗ trợ từ các trình duyệt khác? – levik
Tôi đã không nói không sử dụng nó, tôi nói không tin vào nó. Chắc chắn kiểm tra xem nếu nó có sẵn (tại thời điểm này chỉ có IE8 và vài người dùng Fx Beta) và sử dụng nó nếu có, nhưng tôi chỉ nói rằng bạn không nên giả định trình duyệt hỗ trợ nó. Hiện tại, hai trình duyệt này chỉ là trình duyệt hỗ trợ nó và WebKit hiện đang làm việc trên nó, vì vậy nó có thể sẽ sớm có trong Google Chrome và Safari. –
Ồ, và trên một lưu ý phụ, KHÔNG BAO GIỜ eval() chuỗi JSON. Thay vào đó, sử dụng một trong nhiều thư viện phân tích cú pháp JSON có sẵn. –
Lợi thế của việc sử dụng json2.js là nó sẽ chỉ cài đặt trình phân tích cú pháp nếu trình duyệt chưa có trình phân tích cú pháp. Bạn có thể duy trì khả năng tương thích với các trình duyệt cũ hơn, nhưng sử dụng trình phân tích cú pháp JSON nguyên gốc (an toàn hơn và nhanh hơn) nếu nó có sẵn.
trình duyệt với JSON Quê quán:
- IE8 +
- Firefox 3.1+
- Safari 4.0.3+
- Opera 10.5+
G.
[mở rộng musicfreak nhận xét]
Nếu bạn đang sử dụng jQuery, sử dụng parseJSON
var obj = jQuery.parseJSON(data)
Bên trong nó sẽ kiểm tra nếu trình duyệt hỗ trợ .JSON.parse, và (nếu có) gọi window.JSON.parse bản địa.
Nếu không, phân tích cú pháp chính nó.
jQuery-1.7.1.js - 555 dòng ...
parseJSON: function(data) {
if (typeof data !== "string" || !data) {
return null;
}
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim(data);
// Attempt to parse using the native JSON parser first
if (window.JSON && window.JSON.parse) {
return window.JSON.parse(data);
}
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
if (rvalidchars.test(data.replace(rvalidescape, "@")
.replace(rvalidtokens, "]")
.replace(rvalidbraces, ""))) {
return (new Function("return " + data))();
}
jQuery.error("Invalid JSON: " + data);
}
rvalidchars = /^[\],:{}\s]*$/,
rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
Để tiện lợi hơn bất cứ ai chạy vào chủ đề này - cho một, danh sách dứt khoát up-to-date của trình duyệt hỗ trợ Đối tượng JSON look here.. Một câu trả lời chung ngắn gọn - khá nhiều tất cả các trình duyệt thực sự quan trọng trong năm 2013+.
- 1. Hỗ trợ đối tượng JSON gốc trên trình duyệt di động
- 2. Hỗ trợ JSON gốc trong iOS?
- 3. Hỗ trợ trình duyệt E4X
- 4. Hỗ trợ trình duyệt Ember.js?
- 5. .SVG Hỗ trợ trình duyệt
- 6. Trình duyệt web nào hỗ trợ Array.forEach()
- 7. Trình duyệt web nào hỗ trợ các trình duyệt web?
- 8. Trình duyệt nào chỉ hỗ trợ SSLv2?
- 9. Trình duyệt nào hỗ trợ Xpath 2.0?
- 10. Trình duyệt nào hỗ trợ `overflow-y`?
- 11. .click() phương pháp, hỗ trợ trình duyệt
- 12. Trình duyệt nào hỗ trợ cookie HttpOnly?
- 13. Trình duyệt nào hỗ trợ HTML SHORTTAG?
- 14. Trình duyệt của tôi không hỗ trợ "document.getElementById()"!
- 15. Hỗ trợ chéo trình duyệt của `page-break-inside: tránh;`
- 16. Hỗ trợ Xpath trong trình duyệt của tôi?
- 17. Cách kiểm tra xem trình duyệt có hỗ trợ thuộc tính giữ chỗ gốc không?
- 18. will_paginate hỗ trợ JSON?
- 19. Phát hiện hỗ trợ trình duyệt cho HTML Media Capture
- 20. FB.login(): Trình duyệt không được hỗ trợ IE Mobile
- 21. Trình duyệt di động nào hỗ trợ javascript (và Ajax)?
- 22. Facebook JS kết nối trình duyệt không được hỗ trợ
- 23. Trình duyệt iPad có hỗ trợ jQuery không?
- 24. Xác định xem trình duyệt có hỗ trợ in ấn
- 25. Mọi trình duyệt có hỗ trợ tất cả unicode không?
- 26. Những trình duyệt vẫn hỗ trợ CSS biểu thức
- 27. Trình duyệt Wii có hỗ trợ WebSockets không?
- 28. Trình duyệt nào hỗ trợ nhúng phông chữ
- 29. Trình duyệt nào hỗ trợ HTML 5/CSS3
- 30. Trình duyệt nào hỗ trợ API lịch sử HTML5?
Xem [Khi nào tôi có thể sử dụng phân tích cú pháp JSON?] (Http://caniuse.com/json) để biết thông tin về các trình duyệt có hỗ trợ gốc cho [đối tượng JSON] (http://ecma262-5.com/ELS5_Section_15. htm # Section_15.12). – outis