我对何时使用这两种解析方法感到困惑。
在回显我的json_encoded数据并通过ajax将其检索回来之后,我经常会对何时使用 JSON.stringify 和 JSON.parse 感到困惑。
我在解析时在 console.log 中获得[object,object]
,在字符串化时获得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?
}
});
答案 0 :(得分:620)
JSON.stringify
将JavaScript对象转换为JSON文本,并将该JSON文本存储在字符串中。
JSON.parse
将一串JSON文本转换为JavaScript对象。
答案 1 :(得分:53)
JSON.parse()
用于“解析”作为JSON接收的内容
JSON.stringify()
是从对象/数组中创建一个JSON字符串。
答案 2 :(得分:41)
它们是彼此相反的。 JSON.stringify()
将JS对象序列化为JSON字符串,而JSON.parse()
将JSON字符串反序列化为JS对象。
答案 3 :(得分:21)
他们是彼此的对立面。
<强> 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
答案 4 :(得分:20)
首先,JSON.stringify()
函数将JavaScript值转换为JavaScript Object Notation(JSON)字符串。 JSON.parse()
函数将JavaScript Object Notation(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>
答案 5 :(得分:13)
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" }
答案 6 :(得分:6)
JSON.stringify()
将对象转换为字符串。
JSON.parse()
将JSON字符串转换为对象。
答案 7 :(得分:6)
这里真正的困惑不是关于parse vs stringify,而是关于成功回调的data
参数的数据类型。
data
可以是原始响应,即字符串,也可以是JavaScript对象,根据文档:
成功
类型:功能(任何数据,字符串textStatus,jqXHR jqXHR)A 如果请求成功,则调用该函数。功能得到 传递了三个参数:从服务器返回的数据,格式化 根据dataType参数或dataFilter回调 函数,如果指定;&lt; ..&gt;
并且dataType默认为“智能猜测”
的设置dataType(默认值:Intelligent Guess(xml,json,script或html))
Type:String您期望从中返回的数据类型 服务器。如果没有指定,jQuery将尝试推断基于 响应的MIME类型(XML MIME类型将产生XML,在1.4中 JSON将产生一个JavaScript对象,在1.4脚本中将执行 脚本,其他任何东西都将作为字符串返回。)
答案 8 :(得分:4)
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]]);
Replacer / Space - 可选或取整数值,或者您可以调用整数类型返回函数。
function replacer(key, value) {
if (typeof value === 'number' && !isFinite(value)) {
return String(value);
}
return value;
}
答案 9 :(得分:4)
他们完全相反。
JSON.parse()
用于 解析 以 JSON 收到的数据; 反序列化 JSON字符串到 JavaScript对象 。
JSON.stringify()
用于从对象或数组中创建 JSON字符串; 序列化 JavaScript对象到 JSON字符串 。
答案 10 :(得分:4)
我不知道是否已经提到过,但JSON.parse(JSON.stringify(myObject))的一个用途是创建原始对象的克隆。
当您想要混淆某些数据而不影响原始对象时,这很方便。可能不是最干净/最快的方式,但对于非大规模复杂的对象来说肯定是最简单的。
答案 11 :(得分:3)
JSON.stringify(obj [, replacer [, space]])
- 获取任何可序列化对象并将JSON表示作为字符串返回。
JSON.parse(string)
- 使用格式良好的JSON字符串并返回相应的JavaScript对象。
答案 12 :(得分:3)
他们互相反对。
JSON.Stringify()
将JSON转换为字符串,JSON.Parse()
将字符串解析为JSON。
答案 13 :(得分:1)
JSON:主要用于与服务器交换数据。发送之前 JSON对象到服务器,它必须是一个字符串。
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 representation of the object
// jsonString === '{"Name":"ABC","Dept":"Software"}'; is true
它还将Javascript数组转换为字符串
var arrayObject=["ABC","Software"];// It is array object
var arrString=JSON.stringify(array);// It is string representation of the array (object)
// arrString === '["ABC","Software"]'; is true
当我们从服务器收到JSON数据时,数据将是字符串格式。因此我们将字符串转换为JSON对象。
JSON.parse() //To convert the string into JSON object.
var data='{ "name":"ABC", "Dept":"Software"}'// it is a string (even though it looks like an object)
var JsonData= JSON.parse(data);// It is a JSON Object representation of the string.
// JsonData === { "name":"ABC", "Dept":"Software"}; is true
答案 14 :(得分:0)
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>
答案 15 :(得分:0)
JSON.parse()接受JSON字符串并将其转换为JavaScript对象。
JSON.stringify()接受一个JavaScript对象,并将其转换为JSON字符串。
<div id="print"></div>
尽管这些方法通常用于对象,但它们也可以用于数组:
const myObj = {
name: 'bipon',
age: 25,
favoriteFood: 'fish curry'
};
const myObjStr = JSON.stringify(myObj);
console.log(myObjStr);
// "{"name":"bipon","age":26,"favoriteFood":"fish curry"}"
console.log(JSON.parse(myObjStr));
// Object {name:"bipon",age:26,favoriteFood:"fish curry"}