1

以下两个示例中的哪一个被认为是更好的 JSON 格式 - 就约定、标准和/或节省内存(或出于任何其他原因)而言?

先感谢您。

示例 1:

    {
    “项目”: [
        {
            “职位”:“程序员”,
            “年龄”:29,
            “fname”:“鲍勃”
        },
        {
            “职位”:“开发人员”,
            “年龄”:24,
            “fname”:“乔”
        },
        {
            “职位”:“DBA”,
            “年龄”:31,
            “fname”:“戴夫”
        },
        {
            “位置”:“系统”,
            “年龄”:40,
            “fname”:“辛迪”
        },
        {
            “职位”:“设计师”,
            “年龄”:32,
            “fname”:“艾琳”
        },
        {
            “位置”:“NWA”,
            “年龄”:45,
            “fname”:“山姆”
        },
        {
            “位置”:“处理器”,
            “年龄”:20,
            “fname”:“莱尼”
        },
        {
            “职位”:“网站管理员”,
            “年龄”:28,
            “fname”:“Ed”
        }
    ]
    }
    
示例 2:
    {
    “位置”: [
        “程序员”,
        “开发商”,
        “数据库管理员”,
        “系统”,
        “设计师”,
        “新华网”,
        “处理器”,
        “站长”
    ],
    “年龄”: [
        29,
        24,
        31,
        40,
        32,
        45,
        20,
        28
    ],
    “名字”:[
        “鲍勃”,
        “乔”,
        “戴夫”,
        “辛迪”,
        “艾琳”,
        “山姆”,
        “莱尼”,
        “埃德”
    ]
    }
    

4

2 回答 2

3

在我看来,第一个更干净。它将每个人的属性组合在一起,这很适合转换为 Person 对象。当只有一个列表时,迭代和排序也更容易,对于排序,Python 为简单的排序键提供了 attrgetter。从技术上讲,由于字典较少,第二个可能更有效,但清晰度胜过任何微小的收益。

于 2013-02-21T00:44:22.600 回答
2

肯定是1。

你可以用任何语言在逻辑上迭代它:

for person in json['items']:  #  'people'?
    print person['name']

如果要对其进行迭代,则必须将 2 转换为 1:

data = [{key: json[key][i] for key in json} for i in range(len(json.keys()[0]))]

此外,GZip 压缩有助于减少重复键的开销(我去掉了空格):

File | Size (b) | Gzipped Size (b)
----------------------------------
  1  |    191   |      176        
  2  |    386   |      196        
于 2013-02-21T00:48:17.673 回答