我目前正在调查为什么JSON.stringify()无法正确解析我的对象。这是我的目标,我试图解析为JSON字符串:
var data = [{
name: string,
active: bool,
data: [
value: number,
date: string
]
}]
但是,在我的对象上调用JSON.stringify()时,我得到的结果类似于:
/* JSON.stringify(data) */
[{
name: string,
active: bool,
data: [
[Object],
[Object],
...
]
}]
JSON.stringify是否有细微差别导致这种情况发生?如果有助于澄清任何细节,我很乐意在我的问题中添加更多细节。
答案 0 :(得分:3)
我认为您的数据阵列应该是这样的:
var data = [{
name: string,
active: bool,
data: { //Use {} instead of []
value: number,
date: string
}
}]
答案 1 :(得分:1)
您需要将data
的值更改为JSON object
而不是JSON array
才能使其正常工作。
JSON.stringify()
似乎没有任何问题地解析它:
工作示例:
var o1 = [{
"name":"string",
"active":"bool",
"data":{
"value":"number",
"date":"string"
}
}];
var o2 = [{
"name":"string",
"active":"bool",
"data":[
"value",
"number",
"date",
"string"
]
}];
console.log(JSON.stringify(o1)); // outputs: [{"name":"string","active":"bool","data":{"value":"number","date":"string"}}]
console.log(JSON.stringify(o2)); // outputs: [{"name":"string","active":"bool","data":["value","number","date","string"]}]
答案 2 :(得分:1)
您实际上可以使用JSON.stringify的第二个参数。有两个选项,你可以指定你想要字符串化的所有道具名称:
var data = [{
name: string,
active: bool,
data: [
{value: number},
{date: string}
]
}]
JSON.stringify(data, ['name', 'active', 'data', 'value', 'date'])
=> '[{
"name":"string",
"active":"bool",
"data":[
{"value":"number"},
{"date":"string"}
]}
]'
或者使用具有相同结果的替换函数:
JSON.stringify(data, function replacer(key, value) { return value})
=> '[{
"name":"string",
"active":"bool",
"data":[
{"value":"number"},
{"date":"string"}
]}
]'