1. ホーム
  2. python

[解決済み] JSONオブジェクトの反復処理

2022-06-09 07:31:59

質問

JSONオブジェクトを繰り返し処理し、タイトルやリンクなどのデータをインポートしようとしています。私は、コンテンツに到達することができないようです。 : .

JSONです。

[
    {
        "title": "Baby (Feat. Ludacris) - Justin Bieber",
        "description": "Baby (Feat. Ludacris) by Justin Bieber on Grooveshark",
        "link": "http://listen.grooveshark.com/s/Baby+Feat+Ludacris+/2Bqvdq",
        "pubDate": "Wed, 28 Apr 2010 02:37:53 -0400",
        "pubTime": 1272436673,
        "TinyLink": "http://tinysong.com/d3wI",
        "SongID": "24447862",
        "SongName": "Baby (Feat. Ludacris)",
        "ArtistID": "1118876",
        "ArtistName": "Justin Bieber",
        "AlbumID": "4104002",
        "AlbumName": "My World (Part II);\nhttp://tinysong.com/gQsw",
        "LongLink": "11578982",
        "GroovesharkLink": "11578982",
        "Link": "http://tinysong.com/d3wI"
    },
    {
        "title": "Feel Good Inc - Gorillaz",
        "description": "Feel Good Inc by Gorillaz on Grooveshark",
        "link": "http://listen.grooveshark.com/s/Feel+Good+Inc/1UksmI",
        "pubDate": "Wed, 28 Apr 2010 02:25:30 -0400",
        "pubTime": 1272435930
    }
]

辞書を使ってみました。

def getLastSong(user,limit):
    base_url = 'http://gsuser.com/lastSong/'
    user_url = base_url + str(user) + '/' + str(limit) + "/"
    raw = urllib.urlopen(user_url)
    json_raw= raw.readlines()
    json_object = json.loads(json_raw[0])

    #filtering and making it look good.
    gsongs = []
    print json_object
    for song in json_object[0]:   
        print song

このコードでは : . ( ジャスティン・ビーバーのトラックは無視 :))

どのように解決するのですか?

JSONデータの読み込みが少しもろいです。代わりに

json_raw= raw.readlines()
json_object = json.loads(json_raw[0])

は、本当にそうしてください。

json_object = json.load(raw)

取得したものを"JSONオブジェクト"として考えるべきではありません。あなたが持っているのはリストです。このリストには2つのディクショが含まれています。ディクテには様々なキーと値のペアが含まれていますが、すべて文字列です。あなたが json_object[0] を実行するとき、あなたはリストの最初のディクテを要求しています。それを反復するときに for song in json_object[0]: で、dict のキーに対して反復処理を行います。なぜなら、dictに対して反復処理を行うと、それが得られるものだからです。もしそのdictのキーに関連する値にアクセスしたい場合は、例えばこうします。 json_object[0][song] .

このどれもがJSONに特化したものではありません。どのチュートリアルでもカバーされているように、基本的なPythonの型とその基本的な操作に過ぎません。