我正在尝试解析这个简单的json字符串:
var dataJSON = {};
var data;
dataJSON = {
"status": "OK",
"messages" : [{
"user" : {
"id" : "4",
"status" : "offline",
"name" : "dummy",
"pictures" : ["pic.jpg"]
},
"message" : "Hey",
"timestamp" : 1395660658
}, {
"user" : {
"id" : "2",
"status" : "online",
"name" : "dummy1",
"pictures" : ["pic1.jpg"]
},
"message" : "hello",
"timestamp" : 1395660658
}]
};
console.log('test');
console.log(dataJSON);
//parse data
data = JSON.parse(dataJSON);
但是我收到以下错误:
“无法解析json字符串”
我知道为什么,干杯。
答案 0 :(得分:2)
你根本不需要解析它;它已经是一个JavaScript对象了。
首字母缩略词“JSON”代表 J ava S cript O bject N otation。它是JavaScript中用于“动态”创建对象的本机语法的受限形式。换句话说,JavaScript的本机对象文字语法是JSON的超集。您在那里键入的内容,因为“dataJSON”变量的值是JavaScript对象文字表达式。这种表达式的值是对对象的引用。不需要解析,因为JavaScript解析器本身已经这样做了。
编辑 - 如果您确实需要JSON字符串用于测试目的,那么我认为最简单的方法是使用JSON.stringify()
将对象转换为字符串,并且然后将其传递给测试代码。在您的示例中,看起来像:
dataJSON = JSON.stringify({
"status": "OK",
"messages" : [{
"user" : {
"id" : "4",
"status" : "offline",
"name" : "dummy",
"pictures" : ["pic.jpg"]
},
"message" : "Hey",
"timestamp" : 1395660658
}, {
"user" : {
"id" : "2",
"status" : "online",
"name" : "dummy1",
"pictures" : ["pic1.jpg"]
},
"message" : "hello",
"timestamp" : 1395660658
}]
});
由于“引用引用”的麻烦,这比手工构建字符串要容易一些。当然,您传入的对象应该是一个实际可以表示为JSON的对象,但上面的示例肯定没问题。