Python-Json lädt() Rückgabe string statt Wörterbuch?

Ich versuche zu tun, einige einfache JSON Parsen mit Python 3 gebaut im JSON-Modul, und aus der Lektüre ein paar andere Fragen auf, SO und googeln, es scheint, dass das ist eigentlich ziemlich einfach. Ich denke aber, ich bin immer ein string zurückgegeben, statt der erwarteten Wörterbuch.

Erstens, hier ist die JSON-ich bin versucht, um Werte aus. Es ist nur eine Ausgabe aus der Twitter-API

[{'in_reply_to_status_id_str': None, 'in_reply_to_screen_name': None, 'retweeted':     False, 'in_reply_to_status_id': None, 'contributors': None, 'favorite_count': 0, 'in_reply_to_user_id': None, 'coordinates': None, 'source': '<a href="http://twitter.com" >Twitter Web Client</a>', 'geo': None, 'retweet_count': 0, 'text': 'Tweeting a url \nhttp://t.co/QDVYv6bV90', 'created_at': 'Mon Sep 01 19:36:25 +0000 2014', 'entities': {'symbols': [], 'user_mentions': [], 'urls': [{'expanded_url': 'http://www.isthereanappthat.com', 'display_url': 'isthereanappthat.com', 'url': 'http://t.co/QDVYv6bV90', 'indices': [16, 38]}], 'hashtags': []}, 'id_str': '506526005943865344', 'in_reply_to_user_id_str': None, 'truncated': False, 'favorited': False, 'lang': 'en', 'possibly_sensitive': False, 'id': 506526005943865344, 'user': {'profile_text_color': '333333', 'time_zone': None, 'entities': {'description': {'urls': []}}, 'url': None, 'profile_background_image_url': 'http://abs.twimg.com/images/themes/theme1/bg.png', 'profile_background_image_url_https': 'https://abs.twimg.com/images/themes/theme1/bg.png', 'protected': False, 'default_profile_image': True, 'utc_offset': None, 'default_profile': True, 'screen_name': 'KickzWatch', 'follow_request_sent': False, 'following': False, 'profile_background_color': 'C0DEED', 'notifications': False, 'description': '', 'profile_sidebar_border_color': 'C0DEED', 'geo_enabled': False, 'verified': False, 'friends_count': 40, 'created_at': 'Mon Sep 01 16:29:18 +0000 2014', 'is_translator': False, 'profile_sidebar_fill_color': 'DDEEF6', 'statuses_count': 4, 'location': '', 'id_str': '2784389341', 'followers_count': 4, 'favourites_count': 0, 'contributors_enabled': False, 'is_translation_enabled': False, 'lang': 'en', 'profile_image_url': 'http://abs.twimg.com/sticky/default_profile_images/default_profile_6_normal.png', 'profile_image_url_https': 'https://abs.twimg.com/sticky/default_profile_images/default_profile_6_normal.png', 'id': 2784389341, 'profile_use_background_image': True, 'listed_count': 0, 'profile_background_tile': False, 'name': 'Maktub Destiny', 'profile_link_color': '0084B4'}, 'place': None}]

Wies ich diesen String in eine variable namens json_string etwa so:

json_string = json.dumps(output)
jason = json.loads(json_string)

Dann, wenn ich versuche, zu bekommen einen bestimmten Schlüssel aus den "jason" - Wörterbuch:

print(jason['hashtags'])

Ich erhalte eine Fehlermeldung:

TypeError: string indices must be integers

Ich möchte in der Lage sein, zum konvertieren der json-Ausgabe für ein Wörterbuch, dann verwenden Sie jason[key_name] aufrufen, um Werte mithilfe der angegebenen Tasten. Gibt es etwas offensichtlich, dass ich hier fehlen?

Dies ist meine erste Zeit der Arbeit mit Python, nachdem er von Java. Ich Liebe die Sprache und denke, es ist sehr mächtig. Also, jede Hilfe auf diesem würde sehr geschätzt werden!

1), Die Daten, die Sie eingefügt ist in eine Python-Datenstruktur, nicht als JSON. 2) Die äußere Struktur der Daten ist ein Liste, nicht ein Wörterbuch.
Hmmm, interessant. Es ist also eine Liste mit einem Wörterbuch? Ich habe nur kommentiert das json-Logik und einfach nur versuchte, Ausgabe[0]['hashtags'] mit kein Glück. "Ausgabe" in diesem Fall wird die Python-Datenstruktur zurückgegeben, die von der call. Irgendwelche Gedanken auf, wie man diesen Ansatz?
Wie andere darauf hingewiesen, Ihre JSON-Eingabe wird ein list in Python, nicht ein dict . Darüber hinaus ist der code-snippet, das Sie gab, print(jason['hashtags'] ist auch nicht gültig Python durch das fehlen einer schließenden Klammer. Bitte posten Sie ein syntaktisch korrektes Beispiel mit Ihrer Leistung, so können wir sicher sein, was code produziert, welcher Fehler.
Ich bekomme eine andere Fehlermeldung: TypeError: list indices must be integers, not str. Und das ist, was ich erwarten würde: das resultierende Objekt ist eine Liste, kein string. >>> import json >>> json_string = json.dumps(output) >>> jason = json.loads(json_string) >>> print(jason['hashtags']) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: list indices must be integers, not str
Dies ist auch nicht auch gültiges JSON, das ermöglicht nur double-quoted strings, und nicht single-quoted strings.

InformationsquelleAutor Jade Byfield | 2014-09-01

Schreibe einen Kommentar