我一直对何时使用这两种解析方法感到困惑。
在我回显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?
}
});
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格式编写)并返回一个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数据以字符串的形式到达客户端时,我们需要将字符串转换回对象,以便进行处理
在客户端以一种方便的方式。
它们是彼此的对立面。
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.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"]