2017-09-21 9 views
-1

OpenWeatherMap APIを使用して、都市の名前を入力できるスラックボット機能を構築しています。現在の天気予報が表示されます。pythonを使用してjsonファイルを解析する

しかしAPIでは、jsonオブジェクトである対応する都市名に一致する固有の都市IDが使用されます。

JSONファイルの一部の行私は、JSONファイルを検索し、正しい都市名を照合することによって、それに対応する都市のIDを持つユーザが入力した都市名を一致させたいthis-

[ 
    { 
    "id": 707860, 
    "name": "Hurzuf", 
    "country": "UA", 
    "coord": { 
     "lon": 34.283333, 
     "lat": 44.549999 
    } 
    }, 
    { 
    "id": 519188, 
    "name": "Novinki", 
    "country": "RU", 
    "coord": { 
     "lon": 37.666668, 
     "lat": 55.683334 
    } 
    }, 
] 

のようなものと対応する都市IDを取得します。これは、処理するAPIが要求するAPI呼び出しで送信されます。

このことをPythonでどのように達成するには?

答えて

0

試み、この場合に役立ちます:

jsonobject = [ 
    { 
    "id": 707860, 
    "name": "Hurzuf", 
    "country": "UA", 
    "coord": { 
     "lon": 34.283333, 
     "lat": 44.549999 
    } 
    }, 
    { 
    "id": 519188, 
    "name": "Novinki", 
    "country": "RU", 
    "coord": { 
     "lon": 37.666668, 
     "lat": 55.683334 
    } 
    }, 
] 

for elem in jsonobject: 
    print (elem['id']) 

出力:

707860 
519188 
+0

jsonファイルには、これらの2つに似た何千ものオブジェクトが含まれているので、最後のオブジェクトは非常に時間がかかり、非効率的です。これを行うための効率的なやり方はありませんか? –

+0

すべての 'id'を反復処理する以外の方法があるかどうかはわかりません。しかし、私の答えはあなたの質問ごとにjsonオブジェクトからIDを抽出する方法を指摘したと思います。私たちは、よりよい解決策があれば待つことができます。 –

+0

名前をjsonobject = [...]とすると、エラーが表示されます。1行目の解析エラー: jsonobject = [{ ^ 'STRING'、 'NUMBER'、 'NULL'、 'TRUE'、 'FALSE '、' {'、' ['、' undefined 'を取得しました。 –

0

ここでは、ソリューションの私のバージョンです:

city_name = 'Novinki' 

for city in jsonobject: 
    if city['name'] == city_name: 
     print(city['id']) 

私はあなたがあなたの例では辞書を持っていると信じているし、 jsonではない(おそらくあなたはすでにそれを解析している)。

関連する問題