JSON.stringify 不会对嵌套数组进行字符串化

Zac*_*Zac 8 json

我目前正在调查为什么 JSON.stringify() 没有正确解析我的对象。这是我试图解析为 JSON 字符串的对象:

var data = [{
    name: string,
    active: bool,
    data: [
        value: number,
        date: string
    ]
}]
Run Code Online (Sandbox Code Playgroud)

但是,在我的对象上调用 JSON.stringify() 时,我得到的结果类似于:

/* JSON.stringify(data) */
[{
    name: string,
    active: bool,
    data: [
        [Object],
        [Object],
        ...
    ]
}]
Run Code Online (Sandbox Code Playgroud)

JSON.stringify 是否有细微差别导致这种情况发生?如果它有助于澄清更多细节,我很乐意为我的问题添加更多细节。

ham*_*med 9

我认为你的数据数组应该是这样的:

var data = [{
name: string,
active: bool,
data: { //Use {} instead of []
    value: number,
    date: string
  }
}]
Run Code Online (Sandbox Code Playgroud)


小智 5

您实际上可以使用 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"}
  ]}
]'
Run Code Online (Sandbox Code Playgroud)

或者使用具有相同结果的替换函数:

JSON.stringify(data, function replacer(key, value) { return value})

=> '[{
  "name":"string",
  "active":"bool",
  "data":[
    {"value":"number"},
    {"date":"string"}
  ]}
]'
Run Code Online (Sandbox Code Playgroud)

原始来源:https : //javascript.info/json