如果我引用名称,JSON中的格式是什么?

时间:2010-10-06 01:51:48

标签: json

我正在编写JSON文件,但我不确定以下哪种格式是正确的?

引用变量名称和所有字符串值

{
    "class": {
        "number": 2,
        "student": {
            "name": "Tom",
            "age": 1
        },
        "student": {
            "name": "May",
            "age": 2
        }
    }
}

仅引用字符串值

{
    class: {
        number: 2,
        student: {
            name: "Tom",
            age: 1
        },
        student: 
        {
            name: "May",
            age: 2
        }
    }
}  

3 个答案:

答案 0 :(得分:21)

第一个是有效的,如果你不知道你可以在这里很容易地在线验证你的JSON输出:http://www.jsonlint.com/

答案 1 :(得分:10)

JSON需要引号。有关规格,请参阅http://json.org

特别是,字符串生产是:

  

字符串

     
    

“”
    “ chars

  

答案 2 :(得分:1)

古老的问题,但是OP的JSON(第一种构造)可能具有正确的语法,但是由于它会重复键student,因此会造成麻烦。

import simplejson

data = '''{
    "class": {
        "number": 2,
        "student": {
            "name": "Tom",
            "age": 1
        },
        "student": {
            "name": "May",
            "age": 2
        }
    }
}'''

data_in = simplejson.loads(data)
print(data_in)

收益率:{'class': {'number': 2, 'student': {'age': 2, 'name': 'May'}}}

其中唯一键student_1student_2

import simplejson

data = '''{
    "class": {
        "number": 2,
        "student_1": {
            "name": "Tom",
            "age": 1
        },
        "student_2": {
            "name": "May",
            "age": 2
        }
    }
}'''

data_in = simplejson.loads(data)
print(data_in)

收益率:{'class': {'student_1': {'age': 1, 'name': 'Tom'}, 'number': 2, 'student_2': {'age': 2, 'name': 'May'}}}

更新:
同意@Tomas Hesse认为数组是更好的形式。看起来像这样:

import simplejson

data = '''{
    "class": {
        "number": 2,
        "students" : [
            { "name" : "Tom", "age" : 1 }, 
            { "name" : "May", "age" : 2 }
        ]
    }
}'''

data_in = simplejson.loads(data)
print(data_in)