JSON.stringify和JSON.parse之间的区别

我一直在困惑什么时候使用这两种parsing方法。

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

我的console.log在parsing时得到了[object,object] ,而在string化时得到了一个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? } }); 

JSON.stringify将一个Javascript对象转换为JSON文本并将该JSON文本存储在一个string中。

JSON.parse将一串JSON文本转换成一个Javascript对象。

JSON.parse()用于“parsing”以JSONforms接收的内容。
JSON.stringify()是从对象/数组中创build一个JSONstring。

他们是相反的。 JSON.stringify()将一个JS对象序列化为一个JSONstring,而JSON.parse()将一个JSONstring反序列化为一个JS对象。

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

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

其次,下面的例子将有助于你理解这两个function。

 <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.stringify()

JSON.stringify()将一个JS对象序列化成一个JSONstring。

 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()方法将stringparsing为JSON,可选地转换生成的值。

 JSON.parse('{}'); // {} JSON.parse('true'); // true JSON.parse('"foo"'); // "foo" JSON.parse('[1, 5, "false"]'); // [1, 5, "false"] JSON.parse('null'); // null 
 var log = { "page": window.location.href, "item": "item", "action": "action" }; log = JSON.stringify(log); console.log(log); console.log(JSON.parse(log)); 

//输出将是:

//对于第一个控制台是一个string像:

 {"page":"http://localhost/test.html","item":"document loaded","action":"starting","details"} 

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

 Object { page :"http://localhost/test.html" action : "starting" item :"document loaded" } 

真正的困惑不在于parsingvs stringify,而是关于成功callback的data参数的数据types。

data可以是原始响应,即string,也可以是JavaScript对象,如下所示:

成功

types:函数(任何数据,stringtextStatus,jqXHR jqXHR)如果请求成功,将被调用的函数。 该函数传递三个参数:从服务器返回的数据,根据dataType参数或dataFiltercallback函数进行格式化(如果指定); <..>

dataType的默认设置是“智能猜测”

dataType(默认:智能猜测(XML,JSON,脚本或HTML))

types:string您期待从服务器返回的数据的types。 如果没有指定,jQuery将尝试根据响应的MIMEtypes推断它(一个XML MIMEtypes将产生XML,在1.4 JSON将产生一个JavaScript对象,在1.4脚本将执行该脚本,其他任何将作为string返回)。

JSON.stringify()将对象转换为string。

JSON.parse()将JSONstring转换为对象。

他们是完全相反的。

JSON.parse()用于parsing作为JSON接收的数据; 它将一个JSONstring 反序列化成一个JavaScript对象

JSON.stringify()用于从对象数组中创buildJSONstring ; 它将一个JavaScript对象 序列化为一个JSONstring

JSON.stringify(obj [, replacer [, space]]) – 获取任何可序列化的对象,并以string的forms返回JSON表示。

JSON.parse(string) – forms良好的JSONstring,并返回相应的JavaScript对象。

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> 

JavaScript对象< – > JSONstring


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

JSON.stringify(obj) – 获取任何可序列化的对象并以string的forms返回JSON表示。

 JSON.stringify() -> Object To String. 

JSON.parse(string) – forms良好的JSONstring,并返回相应的JavaScript对象。

 JSON.parse() -> String To Object. 

说明: JSON.stringify(obj [,replacer [,space]]);

Replacer / Space – 可选或者取整数或者你可以调用整型返回函数。

 function replacer(key, value) { if (typeof value === 'number' && !isFinite(value)) { return String(value); } return value; } 
  • 替代品只用于replace非空有限的无。
  • 空间用于按空格缩进Jsonstring

他们是相互对立的。 JSON.Stringify()将JSON转换为string, JSON.Parse()将stringparsing为JSON。

我不知道它是否被提及,但JSON.parse(JSON.stringify(myObject))的用法之一是创build原始对象的克隆。

当您想要在不影响原始对象的情况下混淆某些数据时,这非常方便。 可能不是最干净/最快的方法,但对于不是大规模复杂的对象来说,最简单。

JSON: 主要用于与服务器交换数据。 在将JSON对象发送到服务器之前,它必须是一个string。

 JSON.stringify(): //Converts the JSON object into the string representation. var jsonData={"Name":"ABC","Dept":"Software"};// It is a JSON object var jsonString=JSON.stringify(jsonData);// It is a string 

它还将java脚本数组转换为string

 var arrayObject=["ABC","Software"];// It is array object var arrString=JSON.stringify(array);// It is string 

当我们从服务器接收到JSON数据时,数据将是string格式。因此我们将string转换为JSON对象。

 JSON.parse(): //To convert the string into JSON object. var data='{ "name":"ABC", "Dept":"Software"}'// it is a string representation var JsonData= JSON.parse(data);// It is a Json Object representation. 

JSON.stringify(写在这里的variables名称) :javascript对象转换成json文本。

JSON.parse(variables名):把 json文本转换成javascript对象。