Chuyển đổi đối tượng thành chuỗi JSON


122

jQuery.parseJSON('{"name":"John"}')chuyển đổi biểu diễn chuỗi thành đối tượng nhưng tôi muốn ngược lại. Đối tượng sẽ được chuyển đổi thành chuỗi JSON Tôi đã nhận được một liên kết http://www.devcurry.com/2010/03/convert-javascript-object-to-json.html nhưng nó cần phải có json2.js để jQuery có bản gốc phương pháp để làm điều này?


Câu trả lời:


188

jQuery chỉ thực hiện một số kiểm tra regexp trước khi gọi phương thức trình duyệt gốc window.JSON.parse(). Nếu không có sẵn, nó sử dụng eval()hoặc chính xác hơn new Function()để tạo một đối tượng Javascript.

Ngược lại với JSON.parse()nó là JSON.stringify()tuần tự hóa một đối tượng Javascript thành một chuỗi. jQuery không có chức năng riêng cho việc đó, bạn phải sử dụng phiên bản cài sẵn của trình duyệt hoặc json2.jstừ http://www.json.org

JSON.stringify() có sẵn trong tất cả các trình duyệt chính, nhưng để tương thích với các trình duyệt cũ hơn, bạn vẫn cần dự phòng đó.


4
này có thể hữu ích:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger

2
@tekretic: Tôi hy vọng bạn đang trolling. Chrome triển khai JSONđối tượng máy chủ kể từ ngày 1
jAndy

5
@jAndy: Ồ, xin lỗi. Không phải trolling nhưng OH rất sai lầm. Hóa ra hỗ trợ JSON gốc đã được thêm vào WebKit vào giữa năm 2009 , khiến nó được hỗ trợ kể từ Chrome 3.0. Nhận xét hoàn toàn không chính xác trước đây của tôi dựa trên một nửa câu hỏi lỗi thời này kết hợp với CMS mà tôi đang làm việc hiện tại thực sự thay thế window.JSON bằng thư viện riêng của nó, nghĩa JSON.stringify()là chưa được xác định. Khá thất bại trong tất cả các lần đếm.
Molomby


1
@jAndy: đừng nhầm lẫn với tôi; : JSON.stringify 'serialises' một đối tượng, hãy nói rằng nó chỉ là một sai lầm
halfbit

12

Cũng hữu ích là Object.toSource () cho mục đích gỡ lỗi, nơi bạn muốn hiển thị đối tượng và các thuộc tính của nó cho mục đích gỡ lỗi. Đây là một hàm Javascript chung (không phải jQuery), tuy nhiên nó chỉ hoạt động trong các trình duyệt "hiện đại".


4

Chuyển đổi đối tượng JavaScript thành dữ liệu json

$("form").submit(function(event){
  event.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvertedData = JSON.stringify(formData);  // Convert to json
  consol.log(jsonConvertedData);
});

Bạn có thể xác thực dữ liệu json bằng http://jsonlint.com


2

Bạn có thể sử dụng plugin jquery-Json tuyệt vời:

http://code.google.com/p/jquery-json/

Giúp dễ dàng chuyển đổi đến và từ các đối tượng Json.


2
Vui lòng đề xuất các phương pháp SPL trên các thư viện logic bổ trợ.
David J Eddy

2
SPL = Thư viện PHP chuẩn. Đoán trong trường hợp này sẽ là SJL (thư viện javascript chuẩn).
David J Eddy

3
Câu hỏi là về jQuery & Javascript. Nó không liên quan gì đến PHP, thư viện PHP hoặc SPL.
George Filippakos,

3
thư viện chuẩn là thư viện chuẩn; không quan trọng ngôn ngữ. Quan điểm của tôi là tốt hơn nên đề xuất một giải pháp dạy ngôn ngữ thay vì hội chứng 'sử dụng plugin này'.
David J Eddy,

1
Chính xác, tại sao lại phát minh ra bánh xe ... sử dụng các khả năng tiêu chuẩn của một ngôn ngữ thay vì một 'plugin' nhưng tôi lại lạc đề.
David J Eddy
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.