ฉันมีอาร์เรย์var cars = [2,3,..]
ที่มีจำนวนเต็มไม่กี่ ฉันได้เพิ่มค่าบางอย่างลงในอาร์เรย์ แต่ตอนนี้ฉันต้องส่งอาร์เรย์นี้ไปยังหน้าเว็บด้วย.get
วิธีการของ jQuery ฉันจะแปลงเป็นวัตถุ JSON เพื่อส่งได้อย่างไร
ฉันมีอาร์เรย์var cars = [2,3,..]
ที่มีจำนวนเต็มไม่กี่ ฉันได้เพิ่มค่าบางอย่างลงในอาร์เรย์ แต่ตอนนี้ฉันต้องส่งอาร์เรย์นี้ไปยังหน้าเว็บด้วย.get
วิธีการของ jQuery ฉันจะแปลงเป็นวัตถุ JSON เพื่อส่งได้อย่างไร
คำตอบ:
สคริปต์สำหรับความเข้ากันได้แบบย้อนหลัง: https://github.com/douglascrockford/JSON-js/blob/master/json2.js
และโทร:
var myJsonString = JSON.stringify(yourArray);
หมายเหตุ: ตอนนี้วัตถุ JSON เป็นส่วนหนึ่งของเว็บเบราว์เซอร์ที่ทันสมัยที่สุด (IE 8 & สูงกว่า) ดูcaniuseสำหรับรายชื่อเต็ม เครดิตไปที่: @ Spudley สำหรับความคิดเห็นของเขาด้านล่าง
ฉันทำอย่างนั้น:
ถ้าฉันมี:
var jsonArg1 = new Object();
jsonArg1.name = 'calc this';
jsonArg1.value = 3.1415;
var jsonArg2 = new Object();
jsonArg2.name = 'calc this again';
jsonArg2.value = 2.73;
var pluginArrayArg = new Array();
pluginArrayArg.push(jsonArg1);
pluginArrayArg.push(jsonArg2);
เพื่อแปลง pluginArrayArg (ซึ่งเป็นอาร์เรย์ javascript บริสุทธิ์) ไปเป็นอาร์เรย์ JSON:
var jsonArray = JSON.parse(JSON.stringify(pluginArrayArg))
ว้าวดูเหมือนว่าทุกวันนี้จะง่ายขึ้นมาก ... 3 วิธีที่ทำได้:
json = { ...array };
json = Object.assign({}, array);
json = array.reduce((json, value, key) => { json[key] = value; return json; }, {});
jsonString = JSON.stringify({ ...array })
ฉันตัดสินใจใช้ไลบรารี json2 และฉันพบข้อผิดพลาดเกี่ยวกับ "โครงสร้างข้อมูลแบบวนซ้ำ"
ฉันได้รับการแก้ไขโดยบอก json2 วิธีแปลงวัตถุที่ซับซ้อนของฉัน ไม่เพียงทำงานได้ในขณะนี้ แต่ยังรวมเฉพาะฟิลด์ที่ฉันต้องการด้วย นี่คือวิธีที่ฉันทำ:
OBJ.prototype.toJSON = function (key) {
var returnObj = new Object();
returnObj.devid = this.devid;
returnObj.name = this.name;
returnObj.speed = this.speed;
returnObj.status = this.status;
return returnObj;
}
หรือลองกำหนดอาเรย์เป็นวัตถุ (var cars = {};) จากนั้นไม่จำเป็นต้องแปลงเป็น json นี่อาจไม่เป็นจริงในตัวอย่างของคุณ แต่ใช้ได้ดีสำหรับฉัน
วิธีอื่นอาจเป็นเช่นนี้:
var json_arr = {};
json_arr["name1"] = "value1";
json_arr["name2"] = "value2";
json_arr["name3"] = "value3";
var json_string = JSON.stringify(json_arr);
หากคุณมีเพียงวัตถุเดียวเช่นวัตถุที่คุณถามสิ่งต่อไปนี้จะใช้งานได้
var x = [{'a':'b'}];
var b= JSON.stringify(x);
var c = b.substring(1,b.length-1);
JSON.parse(c);
วิธีที่สั้นที่สุดที่ฉันรู้ในการสร้าง json ที่ถูกต้องจากอาร์เรย์ของจำนวนเต็มคือ
let json = `[${cars}]`
สำหรับวัตถุ / อาร์เรย์ทั่วไปเพิ่มเติม (ไม่มีการอ้างอิงแบบวงกลม ) ให้ใช้ JSON.stringify (cars)
เพราะอาร์เรย์ของฉันเป็นเหมือนด้านล่าง: และฉันใช้ฟังก์ชัน. push เพื่อสร้างแบบไดนามิก
my_array = ["234", "23423"];
วิธีเดียวที่ฉันแปลงอาร์เรย์เป็น json คือ
json = Object.assign({}, my_array);