JSON的区别。stringify和JSON.parse

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

在我回显我的json_encoded数据并通过ajax检索它之后,我经常遇到关于何时应该使用JSON.stringifyJSON.parse的困惑。

我得到[object,object]在我的console.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?
}
});
510046 次浏览

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()用于“解析”作为JSON接收的内容 JSON.stringify()是从对象/数组中创建一个JSON字符串

它们是彼此的倒数。JSON.stringify()将JS对象序列化为JSON字符串,而JSON.parse()将把JSON字符串反序列化为JS对象。

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

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

JSON.stringify()将对象转换为字符串。

JSON.parse()将JSON字符串转换为对象。

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.stringify()函数将JavaScript值转换为JavaScript对象符号(JSON)字符串。JSON.parse()函数将JavaScript对象表示法(JSON)字符串转换为对象。有关这两个功能的更多信息,请参阅以下链接。

< a href = " https://msdn.microsoft.com/library/cc836459 (v = vs.94) . aspx“> https://msdn.microsoft.com/library/cc836459 (v = vs.94) . aspx https://msdn.microsoft.com/library/cc836466 (v = vs.94) . aspx < / p >

其次,下面的示例将有助于您理解这两个函数。

<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>

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

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

成功

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

.

dataType默认设置为intelligent guess

数据类型(默认:智能猜测(xml, json,脚本或html))

Type: String您期望从 服务器。如果没有指定,jQuery将基于 响应的MIME类型(在1.4中,XML MIME类型将生成XML JSON会产生一个JavaScript对象,在1.4脚本中会执行

. Script,以及任何其他内容将作为字符串返回)

它们是彼此的对立面。

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

-> JSON字符串


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 [, replace [, space]])

Replacer/Space -可选或接受整数值,也可以调用整型返回函数。

function replacer(key, value) {
if (typeof value === 'number' && !isFinite(value)) {
return String(value);
}
return value;
}
  • 用于将非有限的no替换为null。
  • 使用空格缩进Json字符串
他们彼此对立。 JSON.Stringify()将JSON转换为字符串,JSON.Parse()将字符串解析为JSON

他们是完全相反的。

< >强JSON.parse() < / >强用于作为JSON接收的解析< em > < / em >数据;反序列化 a JSON字符串JavaScript对象 > < /强。

另一方面,< >强JSON.stringify() < / >强用于从对象数组中创建JSON字符串;it 序列化 a JavaScript对象JSON字符串 > < /强。

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.stringify(myObject))的用途之一是创建原始对象的克隆。

当您希望在不影响原始对象的情况下处理一些数据时,这是非常方便的。可能不是最干净/最快的方法,但对于不太复杂的对象来说肯定是最简单的方法。

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

JSON.parse ()接受JSON字符串并将其转换为JavaScript对象。

JSON.stringify ()接受一个JavaScript对象并将其转换为JSON字符串。

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"}
虽然这些方法通常用于对象,但它们也可以用于数组:
const myArr = ['simon', 'gomez', 'john'];


const myArrStr = JSON.stringify(myArr);


console.log(myArrStr);
// "["simon","gomez","john"]"


console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]

解析字符串(以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对象。< / p > 当JavaSript数据以字符串形式到达客户端时,我们需要将字符串转换回对象,以便进行处理

.在客户端以一种方便的方式