1

次の 2 つの例のうち、規則、標準、および/またはメモリの節約 (またはその他の理由) の観点から、JSON のより適切な形式と見なされるのはどれですか?

前もって感謝します。

例 1:

    {
    "アイテム": [
        {
            "位置": "プログラマー",
            "年齢": 29,
            "fname": "ボブ"
        }、
        {
            "位置": "開発者",
            "年齢": 24,
            "fname": "ジョー"
        }、
        {
            "位置": "DBA",
            "年齢": 31,
            "fname": "デイブ"
        }、
        {
            "位置": "システム",
            "年齢": 40,
            "fname": "シンディ"
        }、
        {
            "役職": "デザイナー",
            "年齢": 32,
            "fname": "エリン"
        }、
        {
            "位置": "NWA",
            "年齢": 45,
            "fname": "サム"
        }、
        {
            "位置": "プロセッサ",
            "年齢": 20,
            "fname": "レニー"
        }、
        {
            "役職": "ウェブマスター",
            "年齢": 28,
            "fname": "エド"
        }
    ]
    }
    
例 2:
    {
    "位置": [
        "プログラマー"、
        "デベロッパー"、
        "DBA",
        "システム",
        "デザイナー"、
        "NWA"、
        "プロセッサー",
        「ウェブマスター」
    ]、
    "年": [
        29,
        24,
        31、
        40、
        32,
        45,
        20,
        28
    ]、
    "fname": [
        "ボブ"、
        "ジョー"、
        "デイブ"、
        "シンディ"、
        "エリン"、
        "サム"、
        "レニー"、
        「エド」
    ]
    }
    

4

2 に答える 2

3

私の意見では、最初のものははるかにクリーンです。各人物の属性をグループ化するため、Personオブジェクトへの変換に適しています。リストが1つしかない場合は、反復と並べ替えも簡単になります。並べ替えのために、Pythonは単純な並べ替えキーの属性を提供します。技術的には、辞書が少ないため、2番目の方が効率的かもしれませんが、明快さはそれによるわずかな利益よりも優れています。

于 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 に答える