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

在我回显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?
    }
});

当前回答

这里真正的困惑不是关于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脚本中会执行 脚本,以及任何其他将作为字符串返回)。

其他回答

他们彼此对立。 JSON. stringify()将JSON转换为字符串,JSON. parse()将字符串解析为JSON。

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" 

JSON.parse()用于将String转换为Object。 JSON.stringify()用于将Object转换为String。

你也可以参考这个…

<script type="text/javascript">

function ajax_get_json(){

    var hr = new XMLHttpRequest();
    hr.open("GET", "JSON/mylist.json", true);
    hr.setRequestHeader("Content-type", "application/json",true);
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
           /*  var return_data = hr.responseText; */

           var data=JSON.parse(hr.responseText);
           var status=document.getElementById("status");
           status.innerHTML = "";
           /* status.innerHTML=data.u1.country;  */
           for(var obj in data)
               {
               status.innerHTML+=data[obj].uname+" is in "+data[obj].country+"<br/>";
               }

        }
    }
    hr.send(null);
    status.innerHTML = "requesting...";
}
</script>

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

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

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