如果我在 JS 中定义了一个对象:
var j={"name":"binchen"};
如何将对象转换为 JSON?输出字符串应该是:
'{"name":"binchen"}'
JSON.stringify()
是您正在寻找的方法。
所有当前的浏览器都内置了原生 JSON 支持。所以只要你不处理像 IE6/7 这样的史前浏览器,你就可以像这样轻松地做到这一点:
var j = { "名称": "binchen" }; console.log(JSON.stringify(j));
使用 json2.js 中的 JSON.stringify()
或大多数现代浏览器中的原生。
JSON.stringify(value, replacer, space) 值任何 JavaScript 值,通常是对象或数组。 replacer 一个可选参数,用于确定对象值如何为对象进行字符串化。它可以是一个函数或一个字符串数组。 space 一个可选参数,指定嵌套结构的缩进。如果省略,文本将被打包,没有多余的空格。如果它是一个数字,它将指定每个级别要缩进的空格数。如果它是一个字符串(例如“\t”或“ ”),它包含用于在每个级别缩进的字符。
replacer
是 可选的,因此如果您仍想使用 space
参数,请将 null
放在 replacer
中。如果您有兴趣使用此功能进行漂亮的打印,我发现此答案也很有用:stackoverflow.com/a/7220510/857209
查看 Thomas Frank 的更新/更好的方法:
重新访问 JSON 字符串化
2008 年 5 月 17 日更新:向 toObject 方法添加了小型消毒剂。现在 toObject() 如果在其中发现任何恶意代码,将不会 eval() 字符串。为了更高的安全性:不要将 includeFunctions 标志设置为 true。 JSON 概念之父 Douglas Crockford 为 JavaScript 编写了第一个字符串化器。后来,Trim Path 的 Steve Yen 写了一个很好的改进版本,我已经使用了一段时间。这是我对史蒂夫版本的更改,我想与您分享。基本上,它们源于我制作字符串化器的愿望:处理和恢复循环引用包括函数/方法的 JavaScript 代码(作为选项),如果需要,从 Object.prototype 中排除对象成员。
您可以使用 JSON.stringify() 方法将 JSON 对象转换为字符串。
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)
如果你使用 AngularJS,'json' 过滤器应该这样做:
<span>{{someObject | json}}</span>
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 会给你你的字符串表示(就像在这个线程中提到的其他时间一样)除非你有一个大对象,这也应该工作 - 只要确保你构建它以满足你的需要 - 我需要它有一个名称而不是数组
为此定义了一个自定义,直到我们从 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"}
直播 http://jsfiddle.net/mailmerohit5/y78zum6v/
沃金...易于使用
$("form").submit(function(evt){
evt.preventDefault();
var formData = $("form").serializeArray(); // Create array of object
var jsonConvert = JSON.stringify(formData); // Convert to json
});
谢谢
您可以像这样使用本机字符串化功能
const j={ "name": "binchen" } /** 将 json 转换为字符串 */ 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}'
对于 Node JS 中的调试,您可以使用 util.inspect()。它更适用于循环引用。
var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
只需使用 JSON.stringify
进行此类转换 - 但请记住具有 undefined
值的字段不会包含在 json 中
var j={"name":"binchen", "remember":undefined, "age": null }; var s=JSON.stringify(j);控制台.log(s);
字段 remember
从输出 json 中“消失”
现有的 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;
}
So in order to convert a js object to JSON String:
将对象转换为字符串的简单语法是
JSON.stringify(value)
完整的语法是: JSON.stringify(value[, 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(param1, param2, param3);
什么是: -
param1 --> 要转换为 JSON 的值
param2 --> 以您自己的方式进行字符串化的函数。或者,它用作最终 JSON 中需要包含哪些对象的白名单。
param3 --> 一种数字数据类型,表示要添加的空格数。允许的最大值为 10。
转换 str => obj
const onePlusStr = '[{"brand":"oneplus"},{"model":"7T"}]';
常量 onePLusObj = JSON.parse(onePlusStr);
转换 obj => str
常量 onePLusObjToStr = JSON.stringify(onePlusStr);
JS 中 JSON 解析的参考:
JSON.parse() : click
JSON.stringify() : click
最流行的方式如下:
var obj = {姓名:“马丁”,年龄:30,国家:“美国”}; // 将 JS 对象转换为 JSON 字符串 var json = JSON.stringify(obj);控制台.log(json);
非常易于使用的方法,但不要在发布时使用它(因为可能存在兼容性问题)。
非常适合在您身边进行测试。
Object.prototype.toSource()
//Usage:
obj.toSource();
JSON.stringify(j);
工作var formattedJSON = JSON.stringify(j, null, 2);
等空格参数