2016-01-14 3 views
0

мне нужна эта строка:Строительство JSON-объект с внутренним массивом в Javascript

{ "имя": "пе", "тип": "Выбор", "ID": "пе", "ширина ": 150," элементы ": [{" ID ":" test1" , "значение": "test1", "название": "test1"}, { "идентификатор": "test3", "значение": "test3 », "название": "test3"}, { "идентификатор": "test2", "значение": "test2", "название": "test2"}]}

я следующее:

JSON.stringify(itemList) дает мне это:

[{"id": "test1", "value": "test1", "title": "test1"}, {"id": "test3", "value": "test3", "title ":" test3 "}, {" идентификатор ":" test2" , "значение": "test2", "название": "test2"}]

Я попытался это:

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

Но я получаю это:

{"name": "ne", "type": "Choice", "id": "ne", "width": "150", "items": "[ {\ "ID \": \ "test1 \", \ "значение \": \ "test1 \", \ "название \": \ "test1 \"}, {\ "ID \": \ "tEST3 \" \ "значение \": \ "test3 \ "\ "Название \": \ "test3 \"}, {\ "ID \": \ "test2 \", \ "значение \": \ "test2 \", \ "TITLE \": \" test2 \ "}]"}

Кто-нибудь знает, где моя ошибка?

`

ответ

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

нет необходимости вызывать JSON.stringify на ваши вопросы, прежде чем stringifying все, попробуйте следующее:

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

Вы звоните JSON.stringify на itemList дважды. Это приведет к тому, что ваш нужный объект будет снова стрицифицирован.

Обратите внимание на две обратный слэш + двойные кавычки (\") в двойном stringify примере ниже:

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

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

Если вы хотите, чтобы правильно stringify объект затем использовать только JSON.stringify один раз на весь объект:

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