JSON对象..在JSON对象中

gre*_*rep 12 javascript json object

所以我是JSON的新手,并且一直在尝试一些可能性.有一件事我想知道:有没有办法将'JSON对象放在'JSON对象'中?我想假设这可以完成,并希望它可能是非常有用的,但是语法的所有尝试都让我失望.以下是该标准的示例:

var Person = {
    name:  'John', 
    age:   21, 
    alive: true,
    siblings: [
        {
            name:  'Andrew', 
            age:   23, 
            alive: true
        },
        {
            name:  'Christine',
            age:   19,
            alive: true
        }
    ]   
}
Run Code Online (Sandbox Code Playgroud)

现在,有没有办法做以下事情?

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

var Person = {
    name:  'John', 
    age:   21, 
    alive: true,
    siblings: [
        {
            Andrew
        },
        {
            name:  'Christine',
            age:   19,
            alive: true
        }
    ]    
}
Run Code Online (Sandbox Code Playgroud)

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

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

gil*_*ly3 11

省略花括号:

var Person = {
    name:  'John', 
    age:   21, 
    alive: true,
    siblings: [
        Andrew,
        {
            name:  'Christine',
            age:   19,
            alive: true
        }
    ]    
}
Run Code Online (Sandbox Code Playgroud)

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
    ];
}
Run Code Online (Sandbox Code Playgroud)

JSON无法实例化对象,例如new Date(),JSON不能将函数作为成员,而JSON不能引用外部对象,如AndrewChristine.