如果我使用以下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));
j=JSON.stringify(j);
或 var newvar=JSON.stringify(j);
。 - Fankyvar formattedJSON = JSON.stringify(j, null, 2);
。 - Jacek Gzel使用 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.
replacer
是可选的,因此如果您仍想使用space
参数,则可以在replacer
中输入null
。如果您希望将此函数用于漂亮的打印,我发现这个答案也很有用: https://dev59.com/6W445IYBdhLWcg3wia2V#7220510 - Glenn Lawrence查看Thomas Frank改进后的更新方式:
更新于2008年5月17日:在toObject方法中添加了小型清洁程序。现在,如果它发现任何恶意代码,toObject()将不会对其进行eval()。为了更安全:不要将includeFunctions标志设置为true。
JSON概念之父Douglas Crockford编写了JavaScript的第一个字符串化器。稍后,Trim Path的Steve Yen编写了一个很好的改进版本,我已经使用了一段时间。我想与大家分享的是我对Steve版本所做的更改。基本上,这些更改源于我希望使字符串化器:
- 处理并恢复循环引用
- 包括函数/方法的JavaScript代码(作为选项)
- 必要时排除Object.prototype中的对象成员。
var j={"name":"binchen"};
JSON.stringify(j)
要进行反向操作,可以使用JSON.parse() 方法将 JSON 字符串转换为 JSON 对象。
JSON.stringify(j, null, 4)
会返回美化后的 JSON 字符串,如果你需要美化的话。
第二个参数是 replacer。它可以被用作过滤器,在将对象转换为字符串时过滤掉某些键值对。如果设置为 null,则会返回所有键值对。
在AngularJS中
angular.toJson(obj, pretty);
obj: 要序列化为JSON的输入。
pretty(可选):
如果设置为true,则JSON输出将包含换行符和空格。如果设置为整数,则JSON输出将包含该数量的空格作为缩进。
(默认值:2)
<span>{{someObject | json}}</span>
JSON.stringify
将JavaScript对象转换为JSON文本,并将该JSON文本存储在字符串中。JSON.parse
将JSON文本字符串转换为JavaScript对象。var j={"name":"binchen"};
JSON.stringify({"key":"value"});
JSON.stringify({"name":"binchen"});
您可以参考下面的链接获取更多信息。
https://developer.mozilla.org/zh-CN/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会给你它的字符串表示(就像在本线程中提到的其他时间一样),除非你需要一个名称而不是数组,否则应该也适用于此- 只需确保按照自己的需求构建即可
JSON.stringify()
是你要找的方法。 - Gowtham