В чем разница и преимущества использования массивов JSON:
{
thing:[
{ },
{ }
]
}
по сравнению с объектами JSON:
{
thing:{
{ },
{ }
}
}
В чем разница и преимущества использования массивов JSON:
{
thing:[
{ },
{ }
]
}
по сравнению с объектами JSON:
{
thing:{
{ },
{ }
}
}
Не звучать как умная задница, но хорошо...
Разница между array
и object
.
Объекты настраиваются с помощью key
и value
как...
person.age = 15;
Если значение key
является переменной, тогда можно получить доступ к нему, как...
var key = "age";
alert(person[key]);
Массивы используют индекс integer [1] и принимают значение.
player[1].score += 1000;
[1] Да, я знаю... в Javascript индекс integer действительно превращается в строку за кулисами. Игнорируйте это. Подумайте о массивах, принимающих целое значение ОСОБЕННО, когда вы думаете о JSON.
Arrays in JSON
используются для организации набора связанных элементов (которые могут быть объектами JSON).
Например: [{ "name" : "item 1" }, { "name" : "item2}]
JSONObject
используется при работе с JSON, который начинается с фигурных скобок. Объект JSON обычно используется для хранения пар ключ/значение, связанных с одним элементом.
Например: { "name" : "firstname", "dateOfBirth": "65475645" }
A JSONArray - упорядоченная последовательность значений. Его внешняя текстовая форма представляет собой строку, заключенную в квадратные скобки с запятыми, разделяющими значения.
A JSONObject - неупорядоченный набор пар имя/значение. Его внешняя форма - это строка, завернутая в фигурные скобки с двоеточиями между именами и значениями и запятыми между значениями и именами.
Массивы JSON представляют собой совокупность объектов. В JS существует множество функций сбора, таких как slice
, pop
, push
. Объекты имеют только более сырые данные.
Объект - ключ и значение, массив - целое число. Когда вы используете то или это?
Я думаю о массивах и объектах как "есть a/an" и "имеет" соответственно. В качестве примера можно использовать "Фрукты".
Каждый элемент в массиве фруктов - это тип плода.
array fruit : [orange, mango, banana]
. Массивы могут содержать объекты, строки, числа, массивы, но позволяют обрабатывать только объекты и массивы.
array fruit : [orange:[], mango:{}, banana:{}]
. Вы можете видеть, что оранжевый тоже массив. Это означает, что любой предмет, который идет внутри оранжевого, является оранжевым, скажем: bitter_orange, mandarin, sweet_orange.
для фруктового объекта, любой предмет в нем является атрибутом плода. таким образом, плод имеет
object fruit :{seed:{}, endocarp:{},flesh:{}}
Это также означает, что что-либо внутри семенного объекта должно быть свойством семени, например: color,
Вторая форма, которую вы показываете, на самом деле недействительна JSON, так как каждому объекту в объекте "вещь" потребуется какое-либо имя вида или свойства для доступа к ней.
Чтобы ответить на ваш вопрос, разница в том, что в первом случае вы должны получить доступ к объектам в "вещи", используя доступ к массиву, например, obj.thing[0]
или obj.thing[1]
. Во втором случае, если у вас есть правильные объявления свойств, вы получите доступ, например, obj.thing.property
Обычно в массиве JSON используются для хранения группировки одинаковых элементов, тогда как объект используется для группировки разных свойств для одного элемента.
JSON - это прежде всего язык, который позволяет сериализовать объекты javascript в строки. Поэтому при десериализации строки JSON вы должны получить структуру объектов javascript. Если ваш json десериализуется в объект, который хранит 100 объектов, называемых object1 для object100, тогда это будет очень неудобно. Большинство десериализаторов ожидают, что у вас будут известные объекты и массивы известных объектов, чтобы они могли преобразовать строки в фактическую структуру объекта на используемом вами языке. Также возникает вопрос, что философия объектно-ориентированного проектирования ответит вам.
Объект JSON можно преобразовать, используя toJSON
:
function kryptonite(key)
{
var replacement = {};
for(var __ in this)
{
if(__ in alias)
replacement[__] = this[__]
}
return replacement;
}
var alias = {"Clark":"","phone":""};
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777"
}
contact.toJSON = kryptonite;
var foo = JSON.stringify(contact)
Массив JSON можно преобразовать, используя map
:
var contact = {
"Clark":"Kent",
"Kal El":"Superman",
"phone":"555-7777",
"home":[{"present":"Metropolis"},{"past":"Krypton"},{"future":"Phantom Zone"}]
}
var filter = {"past":"","future":""}
function junction(value, index)
{
for (var __ in filter) if(value[__]) return value[__]
}
var island = contact.home.map(junction);