вставка значений во вложенный массив элементов файла json

#javascript #json #cordova

#javascript #json #кордова

Вопрос:

Я пытаюсь отредактировать свой файл json с помощью javascript. Мой код файла json

 {
"contacts": {
    "contact": {
        "info": [
            {
                "id": "0",
                "name": "name",
                "number": "0",
                "email": "email"
            }
        ],
        "messages": [
            {
                "message": [
                    {
                        "-from": "0",
                        "-to": "0",
                        "info": {
                            "id": "0",
                            "name": "name",
                            "number": "0",
                            "email": "email"
                        },
                        "text": [
                            {
                                "subText": {
                                    "-italics": "false",
                                    "-underline": "false"
                                }
                            }
                        ],
                        "file": [
                            {
                                "-size": "0",
                                "-type": "image",
                                "fileInfo": {
                                    "id": "0",
                                    "name": "name",
                                    "number": "0",
                                    "email": "email"
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }
}
}
  

Я хочу установить значение contacts.contact.info.id и я хочу поместить еще один массив в contacts.contact.info . пожалуйста, помогите мне с синтаксисом.
я столкнулся с проблемой при создании при создании нового элемента в массиве info.
и расскажите, как отображать значения contacts.contact.info элемент

Комментарии:

1. Одна вещь, о которой не упомянули ответчики, заключается в том, что вам необходимо убедиться, что вы используете JSON.parse(json) для получения своих данных в удобном формате, прежде чем обновлять его.

Ответ №1:

Используя JavaScript, это очень просто:

 var data = {};//your json string here
data.contacts.contact.info[0].id = 'New value here'; //id is in array
data.contacts.contact.info.push('Append this value to info');
//or
data.contacts.contact.info = 'Overwrite current info value';
//get string
console.log(JSON.stringify(data));
  

Вот и все. Если вы хотите вручную изменить данные:

 {
"contacts": {
    "contact": {
        "info": [
            {
                "id": "0",//replace with, for example:
                "name": "name",
                "number": "0",
                "email": "email"
            },//add comma, and data below:
            {
                "id": "123",
                "name": "foobar",
                "number": "1"
            },
            "primitives go here, too"
        ],//end array
        "messages": [...
  

Это все, что нужно.
Чтобы сохранить красивую печать, как вы просили:

 var data = JSON.parse(yourString);
data.contacts.contact.info.push(
    {"id": "7","name": "dg","number": "5454","email": "fsfsf"}
);
data.contacts.contact.info.push(
    {"id": "8","name": "gjhhk","number": "64564","email": "fs54f"}
);
//get pretty string, using spaces for indentation:
console.log(JSON.stringify(data, null, ' '));
//same thing, but using tabs:
console.log(JSON.stringify(data, null, 't'));
  

Комментарии:

1. я сохранил свои данные json в файле и извлекаю их и анализирую с помощью json.parse(); и вставляю данные с помощью data.contacts.contact.info = ‘Перезаписать текущее значение info’; но когда я использую data.contacts.contact.info.push(‘Добавить это значение в info’); , егоне работает.

2. @Leftalone: если вы это сделаете, то data.contacts.contact.info это больше не будет массивом. Если вы хотите добавить данные, используйте push метод для массива. Для замены рассмотрите возможность назначения нового массива, чтобы обеспечить согласованность структуры данных

3. если у меня есть массив внутри массива, как его извлечь.

4. @Leftalone: это довольно просто: предположим var matrix = [[1,2],[3,4]]; , просто используйте 2 индекса: console.log((matrix[0][0] matrix[0][1]) === matrix[1][0]); будет регистрироваться true , потому что 1 2 === 3

5. метод json.contacts.contact.info.push({data}; работает только один раз. если у меня есть два элемента в массиве info, функция push не работает.

Ответ №2:

Вы можете попробовать это:

 var json={contacts:{contact:{info:[{id:"0",name:"name",number:"0",email:"email"}],messages:[{message:[{"-from":"0","-to":"0",info:{id:"0",name:"name",number:"0",email:"email"},text:[{subText:{"-italics":"false","-underline":"false"}}],file:[{"-size":"0","-type":"image",fileInfo:{id:"0",name:"name",number:"0",email:"email"}}]}]}]}}};

console.log(json.contacts.contact.info[0]); //access first record

json.contacts.contact.info.push({id:"1",name:"name",number:"1",email:"abc@xyz.com"}); // add new info

console.log(json.contacts.contact.info);
  

Комментарии:

1. привет, арвинд, что делать в случае массива в массиве, если мне нужно обновить contacts.messages.message.info.id .

2. @Leftalone вы можете использовать json.contacts.contact.messages[0].message[0].info.id =’новое значение’

3. метод json.contacts.contact.info.push({data}; работает только один раз. если у меня есть два элемента в массиве info, функция push не работает.

Ответ №3:

для contacts.contact.info.id :

contacts.contact.info это массив .. так что вы должны работать по индексу, как:

 contacts.contact.info[0].id = newID;
  

чтобы добавить в этот массив:

 contacts.contact.info.push(newArrayItem);
  

надеюсь, это ответит на ваши вопросы..