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

在我回显json_encoded数据并通过ajax检索它之后,我经常对何时应该使用JSON感到困惑。stringify和JSON.parse。

我得到[对象,对象]在我的控制台.log解析和JavaScript对象时stringized。

$.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?
    }
});

当前回答

他们是完全相反的。

JSON.parse()用于解析作为JSON接收的数据;它将JSON字符串反序列化为JavaScript对象。

另一方面,JSON.stringify()用于从对象或数组中创建JSON字符串;它将JavaScript对象序列化为JSON字符串。

其他回答

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

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

首先,JSON.stringify()函数将JavaScript值转换为JavaScript对象符号(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>

JavaScript对象<-> JSON字符串


JSON.stringify() <-> JSON.parse()

JSON.stringify(obj) -接受任何可序列化的对象,并将JSON表示形式作为字符串返回。

JSON.stringify() -> Object To String.

JSON.parse(string) -接受格式良好的JSON字符串并返回相应的JavaScript对象。

JSON.parse() -> String To Object.

解释: JSON。stringify(obj[,转换器[,空间]]);

Replacer/Space -可选或接受整数值,也可以调用整型返回函数。

function replacer(key, value) {
    if (typeof value === 'number' && !isFinite(value)) {
        return String(value);
    }
    return value;
}

用于将非有限的no替换为null。 使用空格缩进Json字符串

它们是彼此的对立面。

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