如果我在JS中定义了一个对象:
var j={"name":"binchen"};
如何将对象转换为JSON?输出字符串应该是:
'{"name":"binchen"}'
如果我在JS中定义了一个对象:
var j={"name":"binchen"};
如何将对象转换为JSON?输出字符串应该是:
'{"name":"binchen"}'
当前回答
现有的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 ();
// When the actual variable was a number, it was returning a number between quotation marks
// return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"';
// Now, we are verifing if is a number and, if it is, we remove the quotation marks
str = str.match (/^\".*\"$/) ? str : '"' + str.replace (/"/g, '\\"') + '"';
if (isNaN (str.replace (/^["]/, '').replace (/["]$/, '')))
return str;
else
return str.replace (/^["]/, '').replace (/["]$/, '');
}
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;
}
其他回答
转换STR => obj
const onePlusStr = '[{“品牌”:“oneplus”},{“模型”:“7 t”}]”;
const onePLusObj = JSON.parse(onePlusStr);
转换obj => STR
const onePLusObjToStr = JSON.stringify(onePlusStr);
JS中JSON解析的参考: JSON.parse():单击 JSON.stringify():单击
JSON。stringify将Javascript对象转换为JSON文本,并将该JSON文本存储在字符串中。
该转换是对象到字符串的转换
JSON。parse将JSON文本字符串转换为Javascript对象。
该转换是一个字符串到对象的转换
var j={"name":"binchen"};
使它成为一个JSON字符串下面可以使用。
JSON.stringify({"key":"value"});
JSON.stringify({"name":"binchen"});
要了解更多信息,您可以参考下面的链接。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify
我有问题与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会给你你的字符串表示(就像在这个线程中提到的其他时间),除非你有一个大对象,这也应该工作-只是确保你构建它来满足你的需要-我需要它有一个名称而不是数组
当前所有浏览器都内置了原生JSON支持。所以只要你不是在处理像IE6/7这样的史前浏览器,你就可以很容易地做到这一点:
Var j = { “名称”:“binchen” }; console.log (JSON.stringify (j));
沃金……使用方便
$("form").submit(function(evt){
evt.preventDefault();
var formData = $("form").serializeArray(); // Create array of object
var jsonConvert = JSON.stringify(formData); // Convert to json
});
谢谢