Упрощение структуры JSON
У меня есть следующая структура JSON, но мне интересно, есть ли способ упростить ее. Может ли "ингредиент" и "количество" удаляться из всех записей каким-то образом, чтобы уменьшить его?
var cooking = {
"recipes" : [
{
"name":"pizza",
"ingredients" : [
{
"ingredient" : "cheese",
"quantity" : "100g"
},
{
"ingredient" : "tomato",
"quantity" : "200g"
}
]
},
{
"name":"pizza 2",
"ingredients" : [
{
"ingredient" : "ham",
"quantity" : "300g"
},
{
"ingredient" : "pineapple",
"quantity" : "300g"
}
]
}
]
};
Ответы
Ответ 1
Да, вы можете немного упростить это:
var recipes = {
"pizza": {
"cheese": "100g",
"tomato": "200g"
},
"pizza 2": {
"ham": "300g",
"pineapple": "300g"
}
}
Объяснение:
-
Верхний уровень вашего примера - объект с одним элементом: {"recipes": <...>}
. Если это не упрощенная версия объекта, на самом деле у которого есть другие элементы, это избыточно. Ваш код знает, что он отправляет/получает, поэтому там нет дополнительной информации.
-
Значение вашего объекта {"recipes": <...>}
- это массив объектов с двумя элементами, с ключами "name"
и "ingredients"
. Всякий раз, когда у вас есть такой массив, имеет смысл (и более компактный) заменить его на объект. Как правило:
Если ключи в массиве объектов могут быть заменены на "key"
и "value"
и все еще имеют смысл, замените массив одним объектом {"key_name": <value>, ...}
.
-
То же правило применяется к вашему массиву [{"ingredient": <...>, "quantity": <...>}, ...]
: каждый объект может быть заменен парой ключ-значение и продолжает иметь смысл.
Конечным результатом является то, что это представление информации составляет 87 символов (с удалением посторонних пробелов) по сравнению с вашими оригинальными 249 символами - 65% -ное сокращение.
Ответ 2
Конечно. Один из способов:
var cooking = {
"recipes" : [
{
"name":"pizza",
"ingredients" : [
"cheese",
"tomato"
],
"quantities" : [ // Have to be in order of ingredients
"100g",
"200g"
]
}
]
}
Или
var cooking = {
"recipes" : [
{
"name":"pizza",
"ingredients" : [ // Putting ingredient and quantity together
"cheese:100g",
"tomato:200g"
]
}
]
}
Так как они все пиццы, вы можете удалить имя.
var cooking = {
"recipes" : [
{
"ingredients" : [
"cheese:100g",
"tomato:200g"
]
},
{
"ingredients" : [
"ham:100g",
"pineapple:200g"
]
}
]
}
Ответ 3
Надеюсь, это упростит это для вас! Json должен быть написан таким образом, чтобы он был минимальным и понятным для компьютеров и людей.
var cooking = {
"recipes" :
[
{
"name":"pizza",
"cheese": "100g"
"tomato": "200g"
}
,
{
"name":"pizza 2",
"ham": "300g"
"pineapple": "300g"
}
]
}
};