将JS对象转换为JSON字符串

1379

如果我使用以下JS代码定义一个对象:

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

我该如何将对象转换为JSON格式?输出的字符串应为:

'{"name":"binchen"}'

77
JSON.stringify()是你要找的方法。 - Gowtham
13
第一次学习时总会有这样的经历。 - Egan Wolf
JSON.stringify 也是复制对象的好方法。 - Justin Meskan
23个回答

5

工作中...易于使用

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

谢谢


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

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}


2

在Node JS中进行调试时,您可以使用util.inspect()。它可以更好地处理循环引用。

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));

2

使用原生函数 JSON.stringify()

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

2

如果您想以字符串格式获取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}'

2
只需使用 JSON.stringify 进行此转换 - 但请记住,具有 undefined 值的字段将不包括在 json 中。

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

字段remember在输出的JSON中“消失”了。


1
你真是救了我的一天。我之前无法保存我的对象,但是你提到的“如果字段的值未定义,则不会将其键包含在JSON中”,解决了我的问题! - Mohammad Ghonchesefidi

2

现有的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;
}

1
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"}"*/

0

将字符串转换为对象

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

const onePLusObj = JSON.parse(onePlusStr);

将对象转换为字符串

const onePLusObjToStr = JSON.stringify(onePlusStr);

有关在JS中解析JSON的参考资料:
JSON.parse():click
JSON.stringify():click


JSON解析在JS中的参考:JSON.parse():https://www.w3schools.com/js/js_json_parse.asp JSON.stringify():https://www.w3schools.com/js/js_json_stringify.asp - yash

0

使用 JSON.stringify(param1, param2, param3);

参数说明: -

param1 --> 要转换为 JSON 的值

param2 --> 用自己的方式进行字符串化的函数。或者,它可以作为白名单,指定哪些对象需要包含在最终的 JSON 中。

param3 --> 表示要添加的空格数的数字数据类型。最大允许为10。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接