Объекты JSON.. внутри объектов JSON
поэтому я новичок в JSON и экспериментирую с некоторыми возможностями. Одна вещь, о которой мне было интересно: Есть ли способ разместить объект JSON внутри объектов JSON?. Я хочу предположить, что это можно сделать, и хотелось бы, чтобы это было возможно, поскольку это может быть очень полезно, но все попытки синтаксиса подвели меня. Вот пример стандарта:
var Person = {
name: 'John',
age: 21,
alive: true,
siblings: [
{
name: 'Andrew',
age: 23,
alive: true
},
{
name: 'Christine',
age: 19,
alive: true
}
]
}
Теперь, есть ли способ сделать что-то вроде следующего?
var Andrew = {
name: 'Andrew',
age: 21,
alive: true
}
var Person = {
name: 'John',
age: 21,
alive: true,
siblings: [
{
Andrew
},
{
name: 'Christine',
age: 19,
alive: true
}
]
}
Если да, то каков правильный способ сделать это? Или это просто, не нужно делать?
edit. Я действительно имею в виду: способен ли JSON кодировать объекты, в которых есть объекты внутри них?
Ответы
Ответ 1
Опустить фигурные скобки:
var Person = {
name: 'John',
age: 21,
alive: true,
siblings: [
Andrew,
{
name: 'Christine',
age: 19,
alive: true
}
]
}
Andrew
- ссылка на объект JavaScript. Вставка фигурного скобки - { foo: 1 }
- является литералом объекта. Чтобы использовать переменную вместо литерала, вы опускаете весь литеральный синтаксис, включая фигурные скобки.
Обратите внимание, что ни один из них не является JSON или "объектом JSON". JSON - это строка, которая соответствует логическому синтаксису JavaScript Object. После того, как строка JSON была проанализирована, это объект JavaScript, а не объект JSON.
Например, это действительный JavaScript, но недействительный JSON:
var Person = {
name: "John",
birthDate: new Date(1980, 0, 1),
speak: function(){ return "hello"; },
siblings: [
Andrew,
Christine
];
}
JSON не может создавать объекты, такие как new Date()
, JSON не может иметь функцию в качестве члена, а JSON не может ссылаться на внешние объекты, такие как Andrew
или Christine
.
Ответ 2
Ты близко. Andrew
уже является объектом, поэтому вам не нужно обертывать его в синтаксисе литерала объекта (и вам понадобится имя свойства, чтобы сопровождать его как значение, если вы это сделали). Как насчет этого:
var Andrew = {
name: 'Andrew',
age: 21,
alive: true
}
var Person = {
name: 'John',
age: 21,
alive: true,
siblings: [
Andrew,
{
name: 'Christine',
age: 19,
alive: true
}
]
}
Ответ 3
У вас есть правильная идея, посмотрите на этот вопрос, он очень похож на ваш. Принятый ответ должен быть тем, что вы ищете: Вложенные объекты JSON - мне нужно использовать массивы для всего?
Ответ 4
var Andrew = {
name: 'Andrew',
age: 21,
alive: true
}
var Person = {
name: 'John',
age: 21,
alive: true,
siblings: [
Andrew,
{
name: 'Christine',
age: 19,
alive: true
}
]
}
Отбросьте скобки, поскольку это уже объект.
Person.siblings[0].name // Andrew
Ответ 5
Вам больше не нужны скобки. Вы можете просто положить Andrew
в качестве одного из значений массива.
siblings: [
Andrew,
{
name: 'Christine',
age: 19,
alive: true
}
]
Ответ 6
В чистом JSON вы можете вставлять объекты в объекты целиком, а не ссылки на объекты.
Если вы используете JSON в JavaScript, это выполнимо, хотя вам не нужны скобки вокруг него.