python3 json.loadsでjsonを読み込み、for ループで特定の要素を抜き出すサンプル
通常でよく使いそうなので、python3でのjsonの読み込み、取得したjsonをforループ処理にて、一部の要素の参照するという、まぜまぜのサンプルを作って見ました。
サンプルでは、このあたりを中心に書いてますー
辞書型変数の参照( for xx in yy:) 、 json.loads および urllib.request

apiの戻り値からJSONをパースする!!
ちょっと効率悪いやり方かどうかもわかっていないですが、 python3でこんなコードをサンプルを書いてみました
cat jsonread.py
-------------------------------
import json
import urllib.request
def main():
try:
url = 'http://localhost:5000/newlists'
res = urllib.request.urlopen(url)
data = json.loads(res.read().decode('utf-8')) # 実行結果(json)をdata変数に格納
except urllib.error.HTTPError as e:
print('HTTPError: ', e)
except json.JSONDecodeError as e:
print('JSONDecodeError: ', e)
for key in data['images']:
print(key['title']) # titleのみ参照
if __name__ == '__main__':
main()
ポイント
いくつかポイントを書きます
json.loads(res.read().decode('utf-8')) # 実行結果
json.loadsです。json.loadではなくて、json.loadsです。これは、JSON形式のファイルを、pythonでの辞書型に変更するって意味があるそうです。
コードを書いてて、超はまったのがこれ(汗)
for key in data['images']:
print(key['title']) # titleのみ参照
data辞書の中のimagesキーの中にある、titleをfor loopで回して出力するって感じです
えと、厳密な単語は説明できないのですが、下記サンプル jsonで、 status , images ってのが、JSONでのKEY だと思うんですね。この中で、statusは今回不要で、imagesの中の、titleのみを参照したかったので、上のような書き方になりました。はじめ、ほんっとに、forループでのでの部分参照がわからなくて悩んでました。結果上の書き方で結果が帰ってきたので、よしとします
戻り値のJSONについて
http://localhost:5000/lists を叩いた結果がこんなJSONだったと仮定します
{
"status": "OK",
"images": [
{
"Url": "https://site1.testsite.com/images-us/images/aaa.jpg",
"Name": "THE BOYZ",
"domain": "site1.testsite.com",
"id": 687813882699529,
"title": "Just U",
"viewid": 687813882699529
},
{
"Url": "https://site2.testsite.com/images-us/images/bbb.jpg",
"Name": "Stray Kids",
"domain": "site2.testsite.com",
"id": 488388864388586,
"title": "3rd Eye",
"viewid": 488388864388586
}
]
}
実行結果
こちらが実行結果になります。パチパチ
$ python3 jsonread.py ------ Just U 3rd Eye
きっと、、おそらく、、こういうのよく使う(使わないか。。)と思いますので参考にどうぞ!!