配列 - python jsonファイル 読み込み




JSONファイルからの値の解析? (6)

"Ultra JSON"または単に "ujson"はJSONファイル入力で[]を扱うことができます。 JSON入力ファイルをプログラムにJSON要素のリストとして読み込んでいる場合は、 [{[{}]}, {}, [], etc...] ujsonは、リストの辞書、リストの辞書の任意の順序を扱うことができます。

ujsonはPythonのパッケージインデックスにあり、APIはPythonの組み込みjsonライブラリとほぼ同じです。

より大きいJSONファイルをロードしている場合は、ujsonも非常に高速です。 提供される同じリンク内の他のPython JSONライブラリと比較して、パフォーマンスの詳細を見ることができます。

私はファイルにこのJSONを持っています:

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": [
        "id": "valore"
    ],
    "om_points": "value",
    "parameters": [
        "id": "valore"
    ]
}

私はこのスクリプトを書いて、すべてのjsonテキストを出力します:

json_data=open(file_directory).read()

data = json.loads(json_data)
pprint(data)

ファイルを解析して単一の値を抽出するにはどうすればよいですか?


Ignacioが言っていることは、あなたのJSONファイルが間違っているということです。 あなたは{}を持つべきときに[]を持っています。 []はリスト用、 {}は辞書用です。

JSONファイルがどのように見えるかは次のとおりです。JSONファイルは私のために読み込まれません。

{
    "maps": [
        {
            "id": "blabla",
            "iscategorical": "0"
        },
        {
            "id": "blabla",
            "iscategorical": "0"
        }
    ],
    "masks": {
        "id": "valore"
    },
    "om_points": "value",
    "parameters": {
        "id": "valore"
    }
}

次に、あなたのコードを使用することができます:

import json
from pprint import pprint

with open('data.json') as f:
    data = json.load(f)

pprint(data)

データを使用すると、次のような値も検索できるようになりました。

data["maps"][0]["id"]
data["masks"]["id"]
data["om_points"]

それらを試して、それが理にかなっているかどうかを見てください。


あなたのdata.jsonは次のようになります:

{
 "maps":[
         {"id":"blabla","iscategorical":"0"},
         {"id":"blabla","iscategorical":"0"}
        ],
"masks":
         {"id":"valore"},
"om_points":"value",
"parameters":
         {"id":"valore"}
}

あなたのコードは:

import json
from pprint import pprint

with open('data.json') as data_file:    
    data = json.load(data_file)
pprint(data)

これは、Python 2.6以降でのみ機能します。これは、 with-statement依存するためwith-statementfrom __future__ import with_statement Python 2.5での使用では、Python <= 2.4では、 Justin Peelの答えを参照してください。この答えは、この答えに基づいています。

次のように単一の値にアクセスできるようになりました。

data["maps"][0]["id"]  # will return 'blabla'
data["masks"]["id"]    # will return 'valore'
data["om_points"]      # will return 'value'

この解析には2つのタイプがあります。

  1. システムパスからファイルのデータを解析する
  2. リモートURLからJSONを解析しています。

ファイルからは、以下を使用できます

import json
json = json.loads(open('/path/to/file.json').read())
value = json['key']
print json['value']

このarcticleは、2つのシナリオを使って完全な解析と値の取得を説明しています。 Pythonを使用したJSONの解析


   # Here you go with modified json file:
   # data.json file : 
    {
        "maps": [
            {
                "id": "blabla",
                "iscategorical": "0"
            },
            {
                "id": "blabla",
                "iscategorical": "0"
            }
        ],
        "masks": [{
            "id": "valore"
        }],
        "om_points": "value",
        "parameters": [{
            "id": "valore"
        }]
    }


   # You can call or print data on console by using below lines

    import json
    from pprint import pprint
    with open('data.json') as data_file:
        data_item = json.load(data_file)
    pprint(data_item)

    print(data_item['parameters'][0]['id'])

    #Output : 
    #pprint(data_item) output as :

    {'maps': [{'id': 'blabla', 'iscategorical': '0'},
              {'id': 'blabla', 'iscategorical': '0'}],
     'masks': [{'id': 'valore'}],
     'om_points': 'value',
     'parameters': [{'id': 'valore'}]}
    #print(data_item['parameters'][0]['id']) output as :
    valore

data = []
with codecs.open('d:\output.txt','rU','utf-8') as f:
    for line in f:
       data.append(json.loads(line))




parsing