ค้นหาเว็บไซต์

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


ถ้าฉันกำหนดวัตถุใน JS ด้วย:

var j={"name":"binchen"};

ฉันจะเปลี่ยนวัตถุเป็น JSON ได้อย่างไร? สตริงผลลัพธ์ควรเป็น:

'{"name":"binchen"}'

คำตอบ #1

เบราว์เซอร์ปัจจุบันทั้งหมดมีการรองรับ JSON ในตัว ดังนั้นตราบใดที่คุณไม่ได้ใช้งานเบราว์เซอร์โบราณอย่าง IE6/7 คุณก็สามารถทำได้ง่ายๆ แบบนั้น:

var j = {
  "name": "binchen"
};
console.log(JSON.stringify(j));

คำตอบ #2

ด้วย JSON.stringify() ที่พบใน json2.js หรือเป็นเนทีฟในเบราว์เซอร์สมัยใหม่ส่วนใหญ่

JSON.stringify(value, replacer, space)
    value       any JavaScript value, usually an object or array.
    replacer    an optional parameter that determines how object
                values are stringified for objects. It can be a
                function or an array of strings.
    space       an optional parameter that specifies the indentation
                of nested structures. If it is omitted, the text will
                be packed without extra whitespace. If it is a number,
                it will specify the number of spaces to indent at each
                level. If it is a string (such as "\t" or " "),
                it contains the characters used to indent at each level.

คำตอบ #3

ลองดูวิธีที่อัปเดต/ดีกว่าของโธมัส แฟรงค์:

  • การทบทวน JSON stringify

อัปเดตวันที่ 17 พฤษภาคม 2008: เพิ่มตัวทำความสะอาดขนาดเล็กให้กับเมธอด toObject. ตอนนี้ toObject() จะไม่ประเมิน (eval()) สตริงหากพบโค้ดที่เป็นอันตรายในนั้น เพื่อความปลอดภัยยิ่งขึ้น: อย่าตั้งค่าตัวแปร includeFunctions เป็น true.

ดักลาส คร็อคฟอร์ด ผู้เป็นบิดาของแนวคิด JSON เขียนตัวแปลงเป็นสตริง (stringifier) ตัวแรก ๆ สำหรับ JavaScript ต่อมา สตีฟ เยน ที่ Trim Path เขียนเวอร์ชันที่ปรับปรุงอย่างดีซึ่งฉันได้ใช้งานมาสักระยะ สิ่งที่ฉันได้ปรับเปลี่ยนจากเวอร์ชันของสตีฟนั้นคือสิ่งที่ฉันอยากจะแบ่งปันกับคุณ โดยพื้นฐานแล้วมันเกิดจากความปรารถนาของฉันที่จะทำให้ตัวแปลงสตริง:

  • จัดการและกู้คืนการอ้างอิงแบบวงจร
  • รวมโค้ด JavaScript สำหรับฟังก์ชัน/เมธอด (เป็นตัวเลือก)
  • ยกเว้นสมาชิกของอ็อบเจ็กต์จาก Object.prototype หากจำเป็น

คำตอบ #4

คุณสามารถใช้เมธอด JSON.stringify() เพื่อแปลงออบเจ็กต์ JSON เป็นสตริงได้

var j={"name":"binchen"};
JSON.stringify(j)

สำหรับกระบวนการย้อนกลับ คุณสามารถใช้วิธี JSON.parse() เพื่อแปลงสตริง JSON เป็นอ็อบเจ็กต์ JSON ได้

คำตอบ #5

JSON.stringify(j, null, 4) จะให้ JSON ที่จัดรูปแบบสวยงามหากคุณต้องการความสวยงามด้วย

พารามิเตอร์ที่สองคือ replacer มันสามารถใช้เป็นตัวกรองที่คุณสามารถกรองค่า key บางค่าเมื่อทำการแปลงเป็นสตริง หากตั้งค่าเป็น null มันจะส่งคืนคู่ค่า key ทั้งหมด

คำตอบ #6

ใน AngularJS

angular.toJson(obj, pretty);

obj: ข้อมูลนำเข้าที่จะถูกทำให้เป็น JSON.

pretty (ไม่บังคับ):
หากตั้งค่าเป็น true ผลลัพธ์ JSON จะมีการขึ้นบรรทัดใหม่และช่องว่าง หากตั้งค่าเป็นจำนวนเต็ม ผลลัพธ์ JSON จะมีจำนวนช่องว่างตามตัวเลขที่กำหนดต่อการเยื้องแต่ละครั้ง

(ค่าเริ่มต้น: 2)

บทความที่เกี่ยวข้อง