JSON.stringify和JSON.parse之间的区别
我一直在困惑什么时候使用这两种parsing方法。
在回应我的json_encoded数据并通过ajax取回之后,我经常会对使用JSON.stringify和JSON.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对象。