将JS对象转换为JSON字符串

如果我在JS中定义了一个对象:

var j={"name":"binchen"};

如何将对象转换为JSON?输出字符串应该是:

'{"name":"binchen"}'
1728908 次浏览

json2.js中找到JSON.stringify()或在大多数现代浏览器中找到本机。

JSON.stringify(value, replacer, space)value       any JavaScript value, usually an object or array.replacer    an optional parameter that determines how objectvalues are stringified for objects. It can be afunction or an array of strings.space       an optional parameter that specifies the indentationof nested structures. If it is omitted, the text willbe packed without extra whitespace. If it is a number,it will specify the number of spaces to indent at eachlevel. If it is a string (such as "\t" or " "),it contains the characters used to indent at each level.

查看Thomas Frank的更新/更好的方式:

更新2008年5月17日:小消毒剂添加到toObject方法。现在toObject()将不会评估()字符串如果它发现任何恶意代码为了更安全:不要设置

Douglas Crockford,JSON概念之父,为JavaScript编写了第一个字符串器之一。后来,Trim Path的Steve Yen写了一个很好的改进版本,我已经使用了一段时间。我想与您分享我对Steve版本的更改。基本上,它们源于我制作字符串器的愿望:

  • 处理和恢复循环引用
  • 包含函数/方法的JavaScript代码(作为选项)
  • 如果需要,从Object.prototype排除对象成员。

所有当前的浏览器都内置了原生JSON支持。因此,只要您不使用IE6/7等史前浏览器,您就可以轻松完成:

var j = {"name": "binchen"};console.log(JSON.stringify(j));

如果您使用的是AngularJS,则“json”过滤器应该这样做:

<span>\{\{someObject | json}}</span>

为此定义了一个自定义,直到我们从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/

您可以使用JSON.stringify()方法将JSON对象转换为String。

var j={"name":"binchen"};JSON.stringify(j)

对于反向进程,您可以使用JSON.parse()方法将JSON字符串转换为JSON对象。

在angularjs

angular.toJson(obj, pretty);

obj:将输入序列化为JSON。

漂亮(可选):
如果设置为true,JSON输出将包含换行符和空格。如果设置为整数,JSON输出将包含每个缩进的许多空格。

(默认值:2)

我遇到了stringify运行内存溢出的问题,其他解决方案似乎不起作用(至少我无法让它们工作),这是我偶然发现这个线程的时候。感谢罗希特·库马尔,我只是迭代我非常大的JSON对象来阻止它崩溃

var j = MyObject;var myObjectStringify = "{\"MyObject\":[";var last = j.lengthvar count = 0;for (x in j) {MyObjectStringify += JSON.stringify(j[x]);count++;if (count < last)MyObjectStringify += ",";}MyObjectStringify += "]}";

MyObjectStringify会给你你的字符串表示(就像这个线程中提到的其他时候一样),除非你有一个大对象,这也应该可以-只要确保你按照你的需求来建造它-我需要它有一个名字而不是数组

您可以像这样使用本机stringify函数

const j={ "name": "binchen" }
/** convert json to string */const jsonString = JSON.stringify(j)
console.log(jsonString) // {"name":"binchen"}

JSON.stringify(j, null, 4)会给你美化的JSON,以防你也需要美化

第二个参数是替换器。它可以用作过滤器,您可以在字符串化时过滤掉某些键值。如果设置为null,它将返回所有键值对

沃金…易于使用

$("form").submit(function(evt){evt.preventDefault();var formData = $("form").serializeArray(); // Create array of objectvar jsonConvert = JSON.stringify(formData);  // Convert to json});

谢了

如果要获取字符串格式的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}'

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

对于Node 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 ();
// 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 marksstr = str.match (/^\".*\"$/) ? str : '"' + str.replace (/"/g, '\\"') + '"';
if (isNaN (str.replace (/^["]/, '').replace (/["]$/, '')))return str;elsereturn str.replace (/^["]/, '').replace (/["]$/, '');}
for (prop in obj) {if (!isArray) {// quote propertystr += quote (prop) + ": ";}
// quote valueval = obj [prop];str += typeof val === "object" ? simpleJSONstringify (val) : quote (val);str += ", ";}
// Remove last colon, close bracketstr = 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[, replace er[, 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(param1, param2, param3);

什么是:-

Param1-->转换为JSON的值

Param2-->函数以您自己的方式进行字符串化。或者,它充当需要将对象包含在最终JSON中的白名单。

Param3-->数字数据类型,指示要添加的空格数。允许的最大值为10。

转换str=>obj

const onePlusStr = '[{"":"oneplus"},{"model":"7T"}]';//3.

const onePlusObj=JSON.parse(1);应用场景

转换obj=>str

const onePLusObjToStr=JSON.stringify(onePlusStr);应用场景

JS中JSON解析的参考:
JSON.parse () : <一个href="http://w3schools.com/js/js_json_parse.asp"rel="no如下">点击
JSON.stringify () : 点击

非常容易使用的方法,但不要在发行版中使用它(因为可能存在兼容性问题)。

非常适合在您身边进行测试。

Object.prototype.toSource()
//Usage:obj.toSource();

最流行的方法如下:

var obj = {name: "Martin", age: 30, country: "United States"};// Converting JS object to JSON stringvar json = JSON.stringify(obj);console.log(json);

您可以使用JSON.stringify()来执行此操作

使用本机函数JSON.stringify()

let userJson = {name : 'Richard'}let userJsonString = JSON.stringify(userJson)