51642


jsonのデータの取り出しについて教えてください。

jsonファイルで

[code]

    {
      "totalItems": "1212",
      "items": [
        {
          "id": "AAAAA",
          "volumeInfo": {
            "title": "あああああ",
            "authors": "かか かかか",
            "publisher": "さささ",
            "publisherDATE": "2000",
            "description": "xxxx",
            "pageCount": "201",
            "previewLink": "http//"
          }
        },
        {
          "id": "BBBBBBB",
          "volumeInfo": {
            "title": "いいいいいい",
            "authors": "ききき きき",
            "publisher": "ししし",
            "publisherDATE": "2001",
            "pageCount": "250",
            "previewLink": "http//"
          }
        },
        {
          "id": "XXXXXXXX",
          "volumeInfo": {
            "title": "うううううううう",
            "authors": "くくく くくく",
            "publisher": "すすす",
            "publisherDATE": "2002",
            "description": "yyyyyyy",
            "pageCount": "280",
            "previewLink": "http//"
          }
        },
        {
          "id": "YYYYYYY",
          "volumeInfo": {
            "title": "ええええええええ",
            "authors": "けけけ けけ",
            "publisher": "せせせ",
            "publisherDATE": "2003",
            "description": "zzzzz",
            "previewLink": "http//"
          }
        },
        {
          "id": "ZZZZZZZZZ",
          "volumeInfo": {
            "title": "おおおおおお",
            "authors": "こここ ここここ",
            "publisher": "そそそ",
            "publisherDATE": "2004",
            "previewLink": "http//"
          }
        }
      ]
    }
    
[/code]

このjsonファイルの中で  
description  
pageCount  
キーと値を削除してデータを取り出したいです。  
それと、descriptionとpageCountキーの値がない場合のエラーを出さないようにしたいです。

自分が試したのは

[code]

    json_file = open('JSONファイルの名前.json', 'r')
    json_object = json.load(json_file)
    
    print(json_object["items"][0]["volumeInfo"])
    
[/code]

volumeInfoの階層までは取り出せたのですが、  
次のtittle から previewLink までのデータを取得したいのですが、  
ここからがどうしてもわかりません。  
その階層までいけば、for文で回せばいいのかなって  
思ってるのですが、、

書き方が読みづらいと思いますが、

どなたか、ご教授お願い致します。


CC BY-SA 4.0
2018-12-31T20:57:50.660
51638
2019-01-01T08:11:11.977
2019-01-01T06:37:34.817
29826
31632
question
python json
python3 jsonファイルデータの取得方法を教えて下さい。


とりあえずこんな感じでどうでしょう。  
Pythonコードと実行結果を貼り付けておきます。  
実行環境はpython3.7.0です。

[code]

    # coding: UTF-8
    
    import json
    
    json_file = open('a.json', 'r')
    json_object = json.load(json_file)
    
    for item in json_object['items']:
      item_info = item['volumeInfo']
    
      print('======== 書籍ID: {} の情報 ========'.format(item['id']))
      print('タイトル: {}'.format(item_info['title']))
      print('著者: {}'.format(item_info['authors']))
      print('出版: {}'.format(item_info['publisher']))
      print('出版日: {}'.format(item_info['publisherDATE']))
      try:
        print('説明: {}'.format(item_info['description']))
        print('ページ数: {}'.format(item_info['pageCount']))
      except KeyError:
        pass
      print('リンク: {}'.format(item_info['previewLink']))
      print()
    
[/code]

実行結果

[code]

    ======== 書籍ID: AAAAA の情報 ========
    タイトル: あああああ
    著者: かか かかか
    出版: さささ
    出版日: 2000
    説明: xxxx
    ページ数: 201
    リンク: http//
    
    ======== 書籍ID: BBBBBBB の情報 ========
    タイトル: いいいいいい
    著者: ききき きき
    出版: ししし
    出版日: 2001
    リンク: http//
    
    ======== 書籍ID: XXXXXXXX の情報 ========
    タイトル: うううううううう
    著者: くくく くくく
    出版: すすす
    出版日: 2002
    説明: yyyyyyy
    ページ数: 280
    リンク: http//
    
    ======== 書籍ID: YYYYYYY の情報 ========
    タイトル: ええええええええ
    著者: けけけ けけ
    出版: せせせ
    出版日: 2003
    説明: zzzzz
    リンク: http//
    
    ======== 書籍ID: ZZZZZZZZZ の情報 ========
    タイトル: おおおおおお
    著者: こここ ここここ
    出版: そそそ
    出版日: 2004
    リンク: http//
    
[/code]

descriptionとpageCountのキーと値を削除してデータを取り出したい、というのはどういうことでしょうか？  
json_objectからそれらのキーと値を削除したいということでしょうか？  
それらの値が必要ない、というだけであれば、わざわざ削除しなくても、descriptionやpageCountの値を呼び出さなければ良いだけの話かと思います。  
上の例であれば、try~exceptに囲まれた部分をコメントアウトしてしまう事がそれに当たるでしょう。

* * *

**追記**  
もっとコードを汎化して短くしてみました。

[code]

    # coding: UTF-8
    
    import json
    
    json_file = open('a.json', 'r')
    json_object = json.load(json_file)
    attributes = ['title', 'authors', 'publisher', 'publisherDATE', 'description', 'pageCount', 'previewLink']
    
    for item in json_object['items']:
      print('======== 書籍ID: {} の情報 ========'.format(item['id']))
    
      for att in attributes:
        try:
          print('{}: {}'.format(att, item['volumeInfo'][att]))
        except KeyError:
          pass
    
      print()
    
[/code]

実行結果

[code]

        ======== 書籍ID: AAAAA の情報 ========
        title: あああああ
        authors: かか かかか
        publisher: さささ
        publisherDATE: 2000
        description: xxxx
        pageCount: 201
        previewLink: http//
    
        ======== 書籍ID: BBBBBBB の情報 ========
        title: いいいいいい
        authors: ききき きき
        publisher: ししし
        publisherDATE: 2001
        pageCount: 250
        previewLink: http//
    
        ======== 書籍ID: XXXXXXXX の情報 ========
        title: うううううううう
        authors: くくく くくく
        publisher: すすす
        publisherDATE: 2002
        description: yyyyyyy
        pageCount: 280
        previewLink: http//
    
        ======== 書籍ID: YYYYYYY の情報 ========
        title: ええええええええ
        authors: けけけ けけ
        publisher: せせせ
        publisherDATE: 2003
        description: zzzzz
        previewLink: http//
    
        ======== 書籍ID: ZZZZZZZZZ の情報 ========
        title: おおおおおお
        authors: こここ ここここ
        publisher: そそそ
        publisherDATE: 2004
        previewLink: http//
    
[/code]


CC BY-SA 4.0
2019-01-01T04:34:36.587
51642
2019-01-01T08:11:11.977
2019-01-01T08:11:11.977
25734
25734
51638
answer