在Javascript中使用内部数组构建JSON-Object

时间:2016-01-14 15:15:51

标签: javascript json

我需要这个字符串:

  

{ “名称”: “NE”, “类型”: “选择”, “ID”: “NE”, “宽度”:150, “项目”:[{ “ID”: “测试1”,“值“:” 测试1" , “标题”: “测试1”},{ “ID”: “TEST3”, “值”: “TEST3”, “标题”: “TEST3”},{ “ID”: “TEST2”, “值”: “TEST2”, “标题”: “TEST2”}]}

我有以下内容:

JSON.stringify(itemList)给了我这个:

  

[{ “ID”: “测试1”, “值”: “测试1”, “标题”: “测试1”},{ “ID”: “TEST3”, “值”: “TEST3”, “标题” : “TEST3”},{ “ID”: “TEST2”, “值”: “TEST2”, “标题”: “TEST2”}]

我试过了:

JSON.stringify({
      name: loadName(),
      type: "Choice",
      id: complexTableId,
      width: loadWidth(),
      items: JSON.stringify(itemList)
})

但我明白了:

  

{ “名称”: “NE”, “类型”: “选择”, “ID”: “NE”, “宽度”: “150”, “项目”: “[{\” ID \“:\ “测试1 \”,\ “值\”:\ “测试1 \”,\ “标题\”:\ “测试1 \”},{\ “ID \”:\ “TEST3 \”,\ “值\”:\ “TEST3 \”,\ “标题\”:\ “TEST3 \”},{\ “ID \”:\ “TEST2 \”,\ “值\”:\ “TEST2 \”,\ “标题\”:\ “TEST2 \”}]“}

有谁知道,我的错误在哪里?

`

3 个答案:

答案 0 :(得分:3)

在对所有内容进行字符串化之前,无需在您的项目上调用JSON.stringify,请尝试以下操作:

JSON.stringify({
    name: loadName(),
    type: "Choice",
    id: complexTableId,
    width: loadWidth(),
    items: itemList
})

答案 1 :(得分:2)

您在JSON.stringify两次致电itemList。这将导致字符串化对象再次进行字符串化。

请注意以下双字符串化示例中的两个反斜杠+双引号(\"):

// single stringify
> JSON.stringify({ test: "Hello World" });
< "{"test":"Hello World"}"

// double stringify
> JSON.stringify({ test: JSON.stringify("Hello World") });
< "{"test":"\"Hello World\""}"

如果要对对象进行正确的字符串化,那么只需在整个对象上使用JSON.stringify一次:

JSON.stringify({
    name: loadName(),
    type: "Choice",
    id: complexTableId,
    width: loadWidth(),
    items: itemList // don't include "JSON.stringify" here
});

答案 2 :(得分:1)

JSON.stringify({
                    name: loadName(),
                    type: "Choice",
                    id: complexTableId,
                    width: loadWidth(),
                    items: itemList
                });