ถ้าฉันกำหนดวัตถุใน JS ด้วย:
var j={"name":"binchen"};
ฉันจะแปลงวัตถุเป็น JSON ได้อย่างไร สตริงเอาต์พุตควรเป็น:
'{"name":"binchen"}'
ถ้าฉันกำหนดวัตถุใน JS ด้วย:
var j={"name":"binchen"};
ฉันจะแปลงวัตถุเป็น JSON ได้อย่างไร สตริงเอาต์พุตควรเป็น:
'{"name":"binchen"}'
คำตอบ:
เบราว์เซอร์ปัจจุบันทั้งหมดมีการสนับสนุน JSON ดั้งเดิมอยู่ภายในตราบใดที่คุณไม่ได้ติดต่อกับเบราว์เซอร์ยุคก่อนประวัติศาสตร์เช่น IE6 / 7 คุณสามารถทำได้ง่ายๆเช่นเดียวกับที่:
var j = {
"name": "binchen"
};
console.log(JSON.stringify(j));
JSON.stringify(j);
สามารถใช้งานได้
var formattedJSON = JSON.stringify(j, null, 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. This method produces a JSON text from a JavaScript value.
replacer
เป็นตัวเลือกดังนั้นหากคุณต้องการที่จะยังคงใช้space
หาเรื่องคุณใส่สำหรับnull
replacer
หากคุณสนใจที่จะใช้ฟังก์ชั่นนี้สำหรับการพิมพ์ที่สวยงามฉันพบว่าคำตอบนี้มีประโยชน์เช่น: stackoverflow.com/a/7220510/857209
ลองใช้วิธีปรับปรุง / วิธีที่ดีกว่าโดย Thomas Frank:
อัปเดต 17 พฤษภาคม 2551: เพิ่มน้ำยาฆ่าเชื้อขนาดเล็กลงใน toObject-method ตอนนี้ toObject () จะไม่ eval () สตริงหากพบโค้ดที่เป็นอันตรายใด ๆ ในนั้นเพื่อความปลอดภัยที่มากยิ่งขึ้น: อย่าตั้งค่าสถานะ includeFunctions เป็น true
Douglas Crockford พ่อของแนวคิด JSON เขียนหนึ่งใน stringifiers แรกสำหรับ JavaScript หลังจากนั้น Steve Yen ที่ Trim Path ได้เขียนปรับปรุงเวอร์ชั่นที่ดีซึ่งฉันใช้ไประยะหนึ่งแล้ว มันเป็นการเปลี่ยนแปลงของฉันในเวอร์ชันของสตีฟที่ฉันต้องการแบ่งปันกับคุณ โดยพื้นฐานแล้วพวกเขาเกิดจากความปรารถนาของฉันที่จะทำให้ stringifier:
- จัดการและกู้คืนการอ้างอิงตามวัฏจักร
- รวมรหัส JavaScript สำหรับฟังก์ชั่น / วิธีการ (เป็นตัวเลือก)
- แยกสมาชิกวัตถุออกจาก Object.prototype หากจำเป็น
คุณสามารถใช้วิธีJSON.stringify ()เพื่อแปลงวัตถุ JSON เป็น String
var j={"name":"binchen"};
JSON.stringify(j)
สำหรับกระบวนการย้อนกลับคุณสามารถใช้วิธีJSON.parse ()เพื่อแปลงสตริง JSON เป็นวัตถุ JSON
ในเชิงมุม JS
angular.toJson(obj, pretty);
obj: อินพุตที่จะต่อเนื่องเป็น JSON
สวย (optional):
หากตั้งค่าเป็นจริงเอาต์พุต JSON จะมีบรรทัดใหม่และช่องว่าง หากตั้งค่าเป็นจำนวนเต็มเอาต์พุต JSON จะมีช่องว่างจำนวนมากต่อการเยื้อง
(ค่าเริ่มต้น: 2)
JSON.stringify(j, null, 4)
จะให้ JSON ที่สวยงามแก่คุณในกรณีที่คุณต้องการความสวยงามด้วย
พารามิเตอร์ที่สองคือ replacer มันสามารถใช้เป็นตัวกรองที่คุณสามารถกรองค่าคีย์บางอย่างเมื่อทำการสตริง หากตั้งค่าเป็น null มันจะส่งคืนคู่ของค่าคีย์ทั้งหมด
หากคุณใช้ AngularJS ตัวกรอง 'json' ควรทำดังนี้
<span>{{someObject | json}}</span>
JSON.stringify
เปลี่ยนวัตถุ Javascript เป็นข้อความ JSON และเก็บข้อความ JSON นั้นในสตริง
การแปลงเป็นObject to String
JSON.parse
เปลี่ยนสตริงของข้อความ JSON เป็นวัตถุ Javascript
การแปลงเป็นสตริงเป็นวัตถุ
var j={"name":"binchen"};
เพื่อให้สามารถใช้ JSON String ได้
JSON.stringify({"key":"value"});
JSON.stringify({"name":"binchen"});
สำหรับข้อมูลเพิ่มเติมคุณสามารถดูลิงค์นี้ด้านล่าง
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
หนึ่งที่กำหนดเองที่กำหนดไว้สำหรับเรื่องนี้จนกว่าเราจะแปลกจากวิธีการ stringify
var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
json +=",";
}
json+="}";
document.write(json);
เอาท์พุท
{"name":"binchen","class":"awesome"}
ฉันมีปัญหาเกี่ยวกับ stringify หน่วยความจำไม่เพียงพอและวิธีแก้ปัญหาอื่น ๆ ดูเหมือนจะไม่ทำงาน (อย่างน้อยฉันก็ไม่สามารถทำให้มันทำงานได้) ซึ่งเป็นช่วงที่ฉันสะดุดกับหัวข้อนี้ ขอบคุณRohit Kumarฉันแค่วนซ้ำวัตถุ JSON ที่มีขนาดใหญ่มากของฉันเพื่อหยุดการทำงานล้มเหลว
var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
MyObjectStringify += JSON.stringify(j[x]);
count++;
if (count < last)
MyObjectStringify += ",";
}
MyObjectStringify += "]}";
MyObjectStringify จะให้สตริงของคุณเป็นตัวแทน (เช่นเวลาอื่น ๆ ที่กล่าวถึงในหัวข้อนี้) ยกเว้นถ้าคุณมีวัตถุขนาดใหญ่สิ่งนี้ควรใช้งานได้ - ตรวจสอบให้แน่ใจว่าคุณสร้างมันให้เหมาะกับความต้องการของคุณ - ฉันต้องการให้มีชื่อมากกว่าอาร์เรย์
Woking ... ใช้งานง่าย
$("form").submit(function(evt){
evt.preventDefault();
var formData = $("form").serializeArray(); // Create array of object
var jsonConvert = JSON.stringify(formData); // Convert to json
});
ขอบคุณ
คุณสามารถใช้ฟังก์ชั่น stringify ดั้งเดิมเช่นนี้
const j={ "name": "binchen" }
/** convert json to string */
const jsonString = JSON.stringify(j)
console.log(jsonString) // {"name":"binchen"}
หากคุณต้องการรับค่าคุณสมบัติ json ในรูปแบบสตริงให้ใช้วิธีต่อไปนี้
var i = {"x":1}
var j = JSON.stringify(i.x);
var k = JSON.stringify(i);
console.log(j);
"1"
console.log(k);
'{"x":1}'
สำหรับการแก้จุดบกพร่องในโหนด JS คุณสามารถใช้util.inspect () มันทำงานได้ดีขึ้นด้วยการอ้างอิงแบบวงกลม
var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
การแทนที่ JSON ที่มีอยู่ซึ่งมากเกินไปสำหรับฉันดังนั้นฉันจึงเขียนฟังก์ชันของตัวเอง ดูเหมือนว่าจะใช้งานได้ แต่ฉันอาจพลาดกรณีขอบหลายอย่าง (ที่ไม่ได้เกิดขึ้นในโครงการของฉัน) และอาจจะไม่ทำงานกับวัตถุที่มีอยู่แล้วใด ๆ เท่านั้นสำหรับข้อมูลที่สร้างขึ้นเอง
function simpleJSONstringify(obj) {
var prop, str, val,
isArray = obj instanceof Array;
if (typeof obj !== "object") return false;
str = isArray ? "[" : "{";
function quote(str) {
if (typeof str !== "string") str = str.toString();
return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
}
for (prop in obj) {
if (!isArray) {
// quote property
str += quote(prop) + ": ";
}
// quote value
val = obj[prop];
str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
str += ", ";
}
// Remove last colon, close bracket
str = str.substr(0, str.length - 2) + ( isArray ? "]" : "}" );
return str;
}
So in order to convert a js object to JSON String:
ไวยากรณ์อย่างง่ายสำหรับการแปลงวัตถุเป็นสตริงคือ
JSON.stringify(value)
ไวยากรณ์แบบเต็มคือ: JSON.stringify (ค่า [, replacer [, space]])
เรามาดูตัวอย่างง่ายๆ โปรดทราบว่าสตริงทั้งหมดได้รับเครื่องหมายคำพูดคู่และข้อมูลทั้งหมดในสตริงจะได้รับการยกเว้นหากจำเป็น
JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* "
{"foo":true,"baz":false}" */
const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1",
"property2":"value2"}"*/
เพียงใช้JSON.stringify
เพื่อทำการแปลง - อย่างไรก็ตามโปรดจำไว้ว่าเขตข้อมูลที่มีundefined
ค่าจะไม่รวมอยู่ใน json
var j={"name":"binchen", "remember":undefined, "age": null };
var s=JSON.stringify(j);
console.log(s);
ฟิลด์remember
'หายไป' จากเอาต์พุต json
คุณสามารถใช้วิธี JSON.stringify () เพื่อแปลงวัตถุ JSON เป็น String
var j={"name":"hello world"};
JSON.stringify(j);
ในการแปลงสตริงนี้กลับไปเป็นวัตถุ json คุณสามารถใช้วิธี JSON.parse ()
ใช้ JSON.stringify(param1, param2, param3);
คืออะไร: -
param1 -> ค่าที่จะแปลงเป็น JSON
param2 -> ฟังก์ชั่นเพื่อทำให้เป็นก้อนในแบบของคุณเอง อีกทางหนึ่งมันทำหน้าที่เป็นรายการสีขาวที่วัตถุจะต้องรวมอยู่ใน JSON สุดท้าย
param3 -> ชนิดข้อมูล Number ซึ่งระบุจำนวนช่องว่างที่ต้องการเพิ่ม จำนวนสูงสุดที่อนุญาตคือ 10
แปลง str => obj
const onePlusStr = '[{"แบรนด์": "oneplus"}, {"แบบจำลอง": "7T"}]';
const onePLusObj = JSON.parse (onePlusStr);
แปลง obj => str
const onePLusObjToStr = JSON.stringify (onePlusStr);
การอ้างอิงการแยกวิเคราะห์ JSON ใน JS:
JSON.parse (): คลิก
JSON.stringify (): คลิก
วิธีการใช้งานง่ายมาก แต่ไม่ได้ใช้ในรีลีส (เนื่องจากปัญหาความเข้ากันได้)
เหมาะสำหรับการทดสอบที่อยู่เคียงข้างคุณ
Object.prototype.toSource()
//Usage:
obj.toSource();
ใช้ฟังก์ชัน stringify
var j = {
"name":"binchen"
};
var j_json = JSON.stringify(j);
console.log("j in json object format :", j_json);
การเข้ารหัสมีความสุข !!!
//use JSON.stringify({})
const stringified = JSON.stringify ({}) // วัตถุที่คุณต้องการแปลงในรูปแบบสตริง
ใช้สิ่งนี้
var j={"name":"binchen"};
var myJSON = JSON.stringify(j);
หากคุณมีสตริง json และมันไม่ได้ห่อด้วย [] ให้ตัดมันก่อน
var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);
หรือ
var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
JSON.stringify()
เป็นวิธีที่คุณมองหา