Во-первых, JSON против JS Объекты
JSON не следует путать с общими c объектами в JavaScript. JSON - это « облегченный формат обмена данными », который делает все возможное, чтобы его было легко читать и редактировать для людей, а также чтобы компьютеры могли его анализировать и генерировать. Одно из основных отличий заключается в том, что JSON имеет более строгие синтаксические требования, чем общие c JS объекты.
То, что вы написали, является просто объявлением объекта в Javascript, а не стандартным JSON. JSON эквивалент данных вашего примера будет выглядеть так:
{
"recipes": [
{
"name": "Spaghetti",
"ingredients": [
{
"ingredientName": "Pasta",
"requiredAmount": 1
},
{
"ingredientName": "Tomato Sauce",
"requiredAmount": 1
}
]
},
{
"name": "Cereal",
"ingredients": [
{
"ingredientName": "Cereal Box",
"requiredAmount": 1
},
{
"ingredientName": "Milk",
"requiredAmount": 1
}
]
}
]
}
Специфические c различия здесь:
- Все имена свойств заключены в двойные кавычки
"
- Все строки заключены в двойные кавычки
"
, а не одинарные '
- Конечные запятые, за которыми не следует другая пара ключ / значение или структура данных, не допускаются
Вы можете опустить свойство recipes
и оставить только массив без охватывающего объекта, это все равно будет действительным.
Также стоит отметить, что prop = value
не допускается в любом синтаксисе: JS объявление объекта или JSON.
Описание полного JSON spe c - здесь , если вам интересно.
Манипулирование JS данными
Вы спросили, какой вариант кода лучше всего добавить к этому JSON. Поскольку JSON - это просто формат, он здесь не особо актуален, поскольку он в основном используется для хранения и передачи данных, а не для манипуляций.
Для работы с данными, хранящимися как JSON в Javascript , вы можете проанализировать его с помощью метода JSON.parse(string)
, который прочитает строку JSON и вернет эквивалентный объект Javascipt. Затем вы можете использовать стандартные методы и приемы манипулирования объектами / массивами для полученного объекта, в данном случае используя push()
, чтобы добавить новый рецепт в массив.