繁体   English   中英

JSON 对象.. 在 JSON 对象内

[英]JSON objects .. inside JSON objects

所以我是 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
        }
    ]    
}

如果是这样,这样做的正确方法是什么? 或者它可以简单地,不做?

编辑:我真正的意思是:JSON 是否能够编码其中包含对象的对象?

省略花括号:

var Person = {
    name:  'John', 
    age:   21, 
    alive: true,
    siblings: [
        Andrew,
        {
            name:  'Christine',
            age:   19,
            alive: true
        }
    ]    
}

Andrew是对 JavaScript object 的引用 花括号符号 - { foo: 1 } - 是 object文字 要使用变量而不是文字,您可以省略整个文字语法,包括花括号。

请注意,这些都不是 JSON 或“JSON 对象”。 JSON 是恰好匹配 JavaScript Object 文字语法的字符串。 Once a JSON string has been parsed, it is a JavaScript object, not a JSON object.

例如,这是有效的 JavaScript,但无效的 JSON:

var Person = {
    name: "John",
    birthDate: new Date(1980, 0, 1),
    speak: function(){ return "hello"; },
    siblings: [
        Andrew,
        Christine
    ];
}

JSON cannot instantiate objects such as new Date() , JSON cannot have a function as a member, and JSON cannot reference external objects such as Andrew or Christine .

你很近。 Andrew已经是 object,因此您不需要将其包装在 object 文字语法中(如果您这样做,您需要一个属性名称作为值伴随它)。 这个怎么样:

var Andrew = {
  name:  'Andrew', 
  age:   21, 
  alive: true
}

var Person = {
  name:  'John', 
  age:   21, 
  alive: true,
  siblings: [
    Andrew,
    {
        name:  'Christine',
        age:   19,
        alive: true
    }
  ]    
}

你的想法是对的,看看这个问题,它和你的很相似。 接受的答案应该是您正在寻找的: 嵌套的 JSON 对象 - 我必须使用 arrays 吗?

var Andrew = {
    name:  'Andrew', 
    age:   21, 
    alive: true
}

var Person = {
    name:  'John', 
    age:   21, 
    alive: true,
    siblings: [
        Andrew,
        {
            name:  'Christine',
            age:   19,
            alive: true
        }
    ]    
}

去掉括号,因为它已经是 object。

Person.siblings[0].name // Andrew

您不再需要括号。 您可以将Andrew作为数组值之一。

siblings: [
        Andrew,
    {
        name:  'Christine',
        age:   19,
        alive: true
    }
] 

在纯 JSON 中,您可以将对象嵌入到对象中,但不能引用对象。

如果您在 JavaScript 中使用 JSON,这是可行的,尽管您不需要它周围的括号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM