我一直对何时使用这两种解析方法感到困惑。
在我回显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:主要用于与服务器交换数据。在发送之前
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"}
And although the methods are usually used on objects, they can also be used on arrays:
const myArr = ['simon', 'gomez', 'john'];
const myArrStr = JSON.stringify(myArr);
console.log(myArrStr);
// "["simon","gomez","john"]"
console.log(JSON.parse(myArrStr));
// ["simon","gomez","john"]
这里真正的困惑不是关于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格式编写)并返回一个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对象。
当JavaSript数据以字符串的形式到达客户端时,我们需要将字符串转换回对象,以便进行处理
在客户端以一种方便的方式。