2016-10-15 6 views
2

Ich lese Zeile für Zeile JSON-Datei. Wenige Zeilen enthalten JSON-Objekte, während andere JSON-Arrays enthalten. Ich verwende json.loads(line) Funktion, um JSON von jeder Zeile zu bekommen.Zeichenfolge ist ein JSON-Objekt oder JSON-Array in Python?

Gibt es eine Möglichkeit, dass ich herausfinden kann, dass das Objekt, das ich lese, JSON-Objekt oder JSON-Array ist? Ich möchte das Ergebnis in json_array speichern.

Ich werde Ihnen dankbar sein, wenn mir jemand helfen kann.

+0

Bitte senden Sie Ihren aktuellen Code – jamylak

+1

Sie können prüfen, der Typ, der [die Umwandlungstabelle] verwendet (https://docs.python.org/2/library/json.html#json-to-py-table) – UnholySheep

+0

@jamylak Ich habe Frage mit Code redigiert. –

Antwort

3

In Python, JSON-Objekt in dict umgewandelt und JSON-Liste wird in list Datentypen umgewandelt.

Also, wenn Sie die Zeile Inhalt überprüfen möchten, die JSON gültig sein sollte, ist JSON Object oder JSON Array, dann ist dieser Code wird Ihnen hilft: -

import json 

# assume that, each line is valid json data 
obj = json.loads(line) 

# if returns true, then JSON Array 
isinstance(obj, list) 

# if returns true, then JSON Object. 
isinstance(obj, dict) 
+0

Mein Problem wurde mit isintance() gelöst. Vielen Dank –

0

Das Problem mit Ihrem Code - wenn Zeile voll JSON-Objekt enthält - es selten - es wird fast immer fehlschlagen.

Anders als in Java wird JSON in Python natürlich durch eine hierarchische Mischung von Listen- und Wörterbuchelementen dargestellt. Wenn Sie also in Ihrem JSON nach Listenelementen suchen, können Sie die rekursive Suche verwenden.

Wenn Sie überprüfen wollen, ob Ihre Datei gültig JSON ist - unter dem Code einfacher und kürzer Test

try: 
    with open(file_name) as f: 
     json_obj = json.load(f) 
    except: 
     print "Not valid JSON" 

EDIT Ist es JSON-Datei oder JSON-Schema?

Bei letzterem können Sie nur überprüfen, ob Ihre Objektliste ist

obj = json.loads(line) 
isintance(obj, list) 

Wie ich bereits erwähnt, gibt es nicht so etwas wie „JSON-Objekt“ in Python

PS Wenn Sie Datei lesen Zeile für Zeile und jede Zeile ist ein JSON-Objekt - es ist keine JSON-Datei, sondern eine Datei, in der jede Zeichenfolge JSON enthält. Andernfalls wird Ihr Test bereits in der ersten Zeile fehlschlagen, die

gerade seine
{ 
+0

Zeile enthält vollständiges JSON-Objekt. Aber wenige andere Zeilen enthalten JSON-Array. Ich weiß, wie man die Gültigkeit überprüft. Wie überprüfe ich das gelesene Objekt als JSON-Objekt oder JSON-Array? –

Verwandte Themen