JSON.stringify 和 JSON.parse 的区别

IT技术 javascript json
2021-01-19 18:02:38

我一直对何时使用这两种解析方法感到困惑。

在我回显我的 json_encoded 数据并通过 ajax 取回它之后,我经常对何时应该使用JSON.stringifyJSON.parse感到困惑

[object,object]解析时进入我的console.log并在字符串化时进入一个 JavaScript 对象。

$.ajax({
url: "demo_test.txt",
success: function(data) {
         console.log(JSON.stringify(data))
                     /* OR */
         console.log(JSON.parse(data))
        //this is what I am unsure about?
    }
});
6个回答

JSON.stringify 将 JavaScript 对象转换为 JSON 文本并将该 JSON 文本存储在字符串中,例如:

var my_object = { key_1: "some text", key_2: true, key_3: 5 };

var object_as_string = JSON.stringify(my_object);  
// "{"key_1":"some text","key_2":true,"key_3":5}"  

typeof(object_as_string);  
// "string"  

JSON.parse 将一串 JSON 文本转换为 JavaScript 对象,例如:

var object_as_string_as_object = JSON.parse(object_as_string);  
// {key_1: "some text", key_2: true, key_3: 5} 

typeof(object_as_string_as_object);  
// "object" 
我发现它对于在控制台中进行调试非常有用 - 它使其易于阅读。
2021-03-20 18:02:38
@Quentin 你能在例子的帮助下解释吗?
2021-03-27 18:02:38
也可用于对象键值对的简单对象副本。
2021-04-02 18:02:38
@MESSIAH——是的。它在很大程度上毫无意义,但可以用作 JSON 验证器。
2021-04-09 18:02:38
json.stringify(json.parse(data))?我在代码中看到了这个...所以这基本上是将 json 数据转换为对象,然后再次将其重新转换为 json 数据。
2021-04-10 18:02:38

JSON.parse()用于“解析”作为 JSON 接收的内容。
JSON.stringify()是从对象/数组中创建一个 JSON 字符串。

精度:它可能不是一个对象。
2021-03-12 18:02:38
@dystroy——它必须是一个对象(注意数组是对象)。
2021-03-23 18:02:38
没错,也可以是数组或任何 Javascript 识别为某种类型的东西。底线;它接受它并将其转换为适当的 JSON 等效项。
2021-03-30 18:02:38
@dystroy - 嗯,没有意识到他们已经扩展它来处理 JSON片段这是不直观的。
2021-04-04 18:02:38
@昆汀 JSON.stringify(3)
2021-04-07 18:02:38

它们互为倒数。JSON.stringify()将 JS 对象序列化为 JSON 字符串,而JSON.parse()将 JSON 字符串反序列化为 JS 对象。

他们是彼此的对立面。

JSON.stringify()

JSON.stringify() 将 JS 对象或值序列化为 JSON 字符串。

JSON.stringify({});                  // '{}'
JSON.stringify(true);                // 'true'
JSON.stringify('foo');               // '"foo"'
JSON.stringify([1, 'false', false]); // '[1,"false",false]'
JSON.stringify({ x: 5 });            // '{"x":5}'

JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)) 
// '"2006-01-02T15:04:05.000Z"'

JSON.stringify({ x: 5, y: 6 });
// '{"x":5,"y":6}' or '{"y":6,"x":5}'
JSON.stringify([new Number(1), new String('false'), new Boolean(false)]);
// '[1,"false",false]'

JSON.parse()

JSON.parse() 方法将字符串解析为 JSON,可选择转换生成的值。

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null
@nueverestjsonify()是模棱两可,误导性,因为parse()不能转换StringJSON类型(这是什么jsonify()会指示),但parse()转换一个JSON格式的 String任何的:ObjectArrayNumberStringBooleannull人们经常混淆 JSON“字符串表示”和Object(或dict在 Python 等中)。
2021-03-17 18:02:38
为什么不是 JSON.toString() 和 JSON.toObject()?我更喜欢这些名称(对于使用智能感知的新程序员特别有用)。
2021-03-20 18:02:38
2021-04-05 18:02:38
更好的名称parse()objectify()or jsonify()
2021-04-08 18:02:38

首先,JSON.stringify()函数将 JavaScript 值转换为 JavaScript Object Notation (JSON) 字符串。JSON.parse()函数将 JavaScript 对象表示法 (JSON) 字符串转换为对象。有关这两个功能的更多信息,请参阅以下链接。

https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx https://msdn.microsoft.com/library/cc836466(v=vs.94).aspx

其次,下面的示例将有助于您理解这两个功能。

<form id="form1" runat="server">
    <div>
        <div id="result"></div>
    </div>
</form>

<script>
    $(function () {
        //define a json object
        var employee = { "name": "John Johnson", "street": "Oslo West 16", "phone": "555 1234567" };

        //use JSON.stringify to convert it to json string
        var jsonstring = JSON.stringify(employee);
        $("#result").append('<p>json string: ' + jsonstring + '</p>');

        //convert json string to json object using JSON.parse function
        var jsonobject = JSON.parse(jsonstring);
        var info = '<ul><li>Name:' + jsonobject.name + '</li><li>Street:' + jsonobject.street + '</li><li>Phone:' + jsonobject.phone + '</li></ul>';

        $("#result").append('<p>json object:</p>');
        $("#result").append(info);
    });
</script>