แปลงวัตถุเป็นสตริง JSON


122

jQuery.parseJSON('{"name":"John"}')แปลงการแสดงสตริงเป็นวัตถุ แต่ฉันต้องการย้อนกลับ วัตถุจะถูกแปลงเป็นสตริง JSON ฉันได้รับลิงค์http://www.devcurry.com/2010/03/convert-javascript-object-to-json.html แต่จำเป็นต้องมี json2.js เพื่อให้ jQuery มีเนทีฟ วิธีการทำ?


คำตอบ:


188

jQuery ทำการตรวจสอบ regexp ก่อนที่จะเรียกใช้เมธอดเบราว์เซอร์ดั้งเดิมwindow.JSON.parse()เท่านั้น หากไม่พร้อมใช้งานจะใช้eval()หรือมากกว่านั้นnew Function()ในการสร้างวัตถุ Javascript

สิ่งที่ตรงกันข้ามJSON.parse()คือการJSON.stringify()ทำให้วัตถุ Javascript เป็นอนุกรมเป็นสตริง jQuery ไม่มีฟังก์ชันการทำงานของตัวเองคุณต้องใช้เบราว์เซอร์เวอร์ชันในตัวหรือjson2.jsจากhttp://www.json.org

JSON.stringify() มีให้บริการในเบราว์เซอร์หลัก ๆ ทั้งหมด แต่เพื่อให้เข้ากันได้กับเบราว์เซอร์รุ่นเก่าคุณยังต้องใช้ทางเลือกนั้น


4
สิ่งนี้อาจเป็นประโยชน์:var theObject = (typeof data == "string") ? jQuery.parseJSON(data) : data;
roberthuttinger

2
@tekretic: ฉันหวังว่าคุณจะหลอก Chrome ใช้JSONวัตถุโฮสต์ตั้งแต่วันที่ 1
jAndy

5
@jAndy: โอ้ว้าวขอโทษ ไม่หลอกล่อ แต่ OH ผิดมาก ปรากฎว่ามีการเพิ่มการสนับสนุน JSON ดั้งเดิมใน WebKit ในกลางปี ​​2009ทำให้รองรับตั้งแต่ Chrome 3.0 ความคิดเห็นที่ไม่ถูกต้องทั้งหมดก่อนหน้านี้ของฉันเป็นไปตามครึ่งหนึ่งของคำถามที่ล้าสมัยนี้รวมกับ CMS ที่ฉันกำลังดำเนินการอยู่ซึ่งจะแทนที่หน้าต่าง JSON ด้วยไลบรารีของตัวเองซึ่งJSON.stringify()ไม่ได้กำหนดความหมายไว้ ค่อนข้างล้มเหลวในการนับทั้งหมด
Molomby


1
@jAndy: อย่าสับสนฉัน; : JSON.stringify 'serialises' วัตถุโปรดบอกว่ามันเป็นเพียงความผิดพลาด
ครึ่งบิต

12

นอกจากนี้ยังมีประโยชน์คือ Object.toSource () สำหรับวัตถุประสงค์ในการดีบักซึ่งคุณต้องการแสดงวัตถุและคุณสมบัติของวัตถุเพื่อวัตถุประสงค์ในการดีบัก นี่เป็นฟังก์ชัน Javascript ทั่วไป (ไม่ใช่ jQuery) แต่ใช้ได้กับเบราว์เซอร์ "สมัยใหม่" เท่านั้น


4

แปลงวัตถุ JavaScript เป็นข้อมูล 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);
});

คุณสามารถตรวจสอบข้อมูล json โดยใช้http://jsonlint.com


2

คุณสามารถใช้ปลั๊กอิน jquery-Json ที่ยอดเยี่ยม:

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

ทำให้ง่ายต่อการแปลงไปและกลับจากวัตถุ Json


2
โปรดแนะนำเมธอด SPL บนไลบรารีลอจิกแอดออน
David J Eddy

2
SPL = ไลบรารี PHP มาตรฐาน เดาว่าในกรณีนี้น่าจะเป็น SJL (ไลบรารีจาวาสคริปต์มาตรฐาน)
David J Eddy

3
คำถามเกี่ยวกับ jQuery & Javascript ไม่มีอะไรเกี่ยวข้องกับ PHP, PHP libraries หรือ SPL
George Filippakos

3
ห้องสมุดมาตรฐานคือห้องสมุดมาตรฐาน ไม่สำคัญว่าภาษา ประเด็นของฉันเป็นการดีกว่าที่จะแนะนำวิธีแก้ปัญหาที่สอนภาษามากกว่า 'use this plugin' syndrome
David J Eddy

1
ทำไมต้องสร้างวงล้อใหม่ ... ใช้ความสามารถมาตรฐานของภาษามากกว่า 'ปลั๊กอิน' แต่ฉันพูดนอกเรื่อง
David J Eddy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.