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

在我回显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.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>

其他回答

解析字符串(以JSON格式编写)并返回一个JavaScript对象

var obj = JSON.parse('{"firstName":"John", "lastName":"Doe"}');

Stringify一个JavaScript对象:

var obj = { "name":"John", "age":30, "city":"New York"};
var myJSON = JSON.stringify(obj);

当客户端(例如浏览器向客户端发送数据或从客户端获取数据)需要发送一个字符串。你不能发送数据 JavaScript对象。

当JavaSript数据以字符串的形式到达客户端时,我们需要将字符串转换回对象,以便进行处理 在客户端以一种方便的方式。

JSON。stringify(obj [, replacer [, space]]) -接受任何可序列化对象并以字符串形式返回JSON表示。

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

这里真正的困惑不是关于parse和stringify,而是关于成功回调的数据参数的数据类型。

data可以是原始响应,即字符串,也可以是JavaScript对象,如文档所示:

成功 类型:函数(任何数据,字符串textStatus, jqXHR jqXHR 函数在请求成功时调用。函数得到 传递三个参数:从服务器返回的数据,格式化 根据dataType参数或dataFilter回调 函数(如果指定)

dataType默认设置为intelligent guess

数据类型(默认:智能猜测(xml, json,脚本或html)) 类返回的数据类型 服务器。如果没有指定,jQuery将尝试基于 响应的MIME类型(在1.4中,XML MIME类型将生成XML JSON会产生一个JavaScript对象,在1.4脚本中会执行 脚本,以及任何其他将作为字符串返回)。

var log = { "page": window.location.href, 
        "item": "item", 
        "action": "action" };

log = JSON.stringify(log);
console.log(log);
console.log(JSON.parse(log));

//输出将是:

//对于第一个控制台是一个字符串:

'{ "page": window.location.href,"item": "item","action": "action" }'

//第二个控制台是一个类似对象:

Object {
page   : window.location.href,  
item   : "item",
action : "action" }

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