Присоединение к объекту JSON с использованием JavaScript - PullRequest
5 голосов
/ 10 октября 2010

Я строю объект JSON, используя JavaScript. Как бы я вставил следующие данные в конец стека:

"hello": { "label":"Hello", "url":"#hello" }

в следующую переменную:

var ListData = {
  "main": {
    "label":"Main",
    "url":"#main"
  },
  "project": {
    "label":"Project",
    "url":"#project"
  },
  "settings": {
    "label":"Settings",
    "url":"#settings",
    "subnav":[
      {
        "label":"Privacy",
        "url":"#privacy"
      },
      {
        "label":"Security",
        "url":"#security"
      },
      {
        "label":"Advanced",
        "url":"#advanced"
      }
    ]
  }
};

Итак, переменная выглядит так:

var ListData = {
  "main": {
    "label":"Main",
    "url":"#main"
  },
  "project": {
    "label":"Project",
    "url":"#project"
  },
  "settings": {
    "label":"Settings",
    "url":"#settings",
    "subnav":[
      {
        "label":"Privacy",
        "url":"#privacy"
      },
      {
        "label":"Security",
        "url":"#security"
      },
      {
        "label":"Advanced",
        "url":"#advanced"
      }
    ]
  },
  "hello": {
    "label":"Hello",
    "url":"#hello"
  }
};

Я использовал следующий код, но он не работает:

var NewData = '"hello": { "label":"Hello", "url":"#hello" }';
ListData.push(NewData);

Ответы [ 5 ]

15 голосов
/ 10 октября 2010

Вы можете вставить его напрямую с литералом объекта:

ListData.hello = { label: "Hello", url: "#hello" }; 
5 голосов
/ 10 октября 2010

Если вы используете jQuery, вы можете использовать. extend () jQuery API, например:

$.extend(ListData, {"hello": { "label":"Hello", "url":"#hello" }});
2 голосов
/ 31 января 2017

У меня есть еще одно решение с использованием модуля underscore.js,

var _ = require("underscore");

var src = {
    "main": {
        "label": "Main",
        "url": "#main"
    },
    "project": {
        "label": "Project",
        "url": "#project"
    },
    "settings": {
        "label": "Settings",
        "url": "#settings",
        "subnav": [
            {
                "label": "Privacy",
                "url": "#privacy"
            },
            {
                "label": "Security",
                "url": "#security"
            },
            {
                "label": "Advanced",
                "url": "#advanced"
            }
        ]
    }
};

var dest = {"hello": { "label":"Hello", "url":"#hello" }};


var data = _.extend(src, dest);
console.log(JSON.stringify(data));

Обязательный параметр:

{"main":{"label":"Main","url":"#main"},"project":{"label":"Project","url":"#project"},"settings":{"label":"Settings","url":"#settings","subnav":[{"label":"Privacy","url":"#privacy"},{"label":"Security","url":"#security"},{"label":"Advanced","url":"#advanced"}]},"hello":{"label":"Hello","url":"#hello"}}
1 голос
/ 14 февраля 2017

Литерал JavaScript Object представляет собой разделенный запятыми список пар имя / значение, заключенный в пару фигурных скобок.

Чтобы добавить имя свойства encampment name со значением Valley Forge в низ стопки , просто добавьте имя свойства после JSON объект с точечным синтаксисом. Затем укажите значение. (См. «Добавление данных» ниже)

Вы также можете удалить добавленную пару имя / значение из литерала объекта. (См. «Удалить данные ниже»)

// Start with some JSON
var myJson = { "name":"George Washington", "rank":"General", "serial":"102" };

// Append data
myJson.encampment = "Valley Forge";    

// Delete data
delete myJson.encampment
0 голосов
/ 10 октября 2010

Сохраняя при себе операторы литералов объектов, просто добавьте еще один объект к объекту ListData.

ListData.hello = { "label":"Hello", "url":"#hello" };

push только для массивов Javascript.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...