Какой правильный формат в JSON, я должен также указывать имена? - PullRequest
14 голосов
/ 06 октября 2010

Я пишу файл 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 ]

21 голосов
/ 06 октября 2010

Первый действителен, если вы не знаете, вы можете довольно легко проверить вывод JSON онлайн здесь: http://www.jsonlint.com/

10 голосов
/ 06 октября 2010

JSON требует кавычек. См. http://json.org для спецификации.

В частности, строка производства:

строка

""
" символы "

1 голос
/ 20 июня 2018

Старый вопрос, но JSON OP (первая конструкция) может иметь правильный синтаксис, но это вызовет проблемы, потому что он повторяет ключ 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_1 и student_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'}}}

UPDATE:
Согласитесь с @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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...