Číst, zapisovat a analyzovat JSON pomocí Pythonu

Číst, zapisovat a analyzovat JSON pomocí Pythonu

JSON je odlehčený datový formát pro výměnu dat, který lze snadno číst a zapisovat lidmi a snadno analyzovat a generovat stroje. Jedná se o kompletní jazykově nezávislý textový formát. Pro práci s daty JSON má Python vestavěný balíček s názvem JSON.

Příklad JSON String

s = '{'id':01, 'name': 'Emily', 'language': ['C++', 'Python']}' 

Syntaxe JSON je považován za podmnožinu syntaxe JavaScript včetně následujících:

  • Páry název/hodnota: Představuje Data, za jménem následuje dvojtečka( : ) a dvojice Název/Hodnota jsou odděleny čárkou( , ).
  • Složené závorky: Drží předměty.
  • Hranaté závorky: Podržte pole s hodnotami oddělenými čárkou ( , ).

Klíče/název musí být řetězce s dvojitými uvozovkami a hodnoty musí být datové typy z následujících:

Příklad souboru JSON:

 {  'employee': [  {  'id': '01',  'name': 'Amit',  'department': 'Sales'  },  {  'id': '04',  'name': 'sunil',  'department': 'HR'  }  ] } 

Python Parse JSON String

V níže uvedeném kódu převedeme JSON na objekt Python. Abychom analyzovali řetězec JSON v Pythonu, nejprve importujeme modul JSON. V proměnné máme uložený řetězec JSON 'zaměstnanec' a tento řetězec JSON převedeme na objekt Pythonu pomocí json.loads() metoda modulu JSON v Pythonu. Poté vytiskneme jméno zaměstnance pomocí klíče ‚jméno‘ .

Python3




# Python program to convert JSON to Python> import> json> # JSON string> employee> => '{'id':'09', 'name': 'Nitin', 'department':'Finance'}'> # Convert string to Python dict> employee_dict> => json.loads(employee)> print> (employee_dict)> print> (employee_dict[> 'name'> ])>

Výstup

{'id': '09', 'name': 'Nitin', 'department': 'Finance'} Nitin 

Python čte soubor JSON

Předpokládejme, že máme soubor JSON, který vypadá takto.

pyhton-append-json1

Zde jsme použili funkci open() ke čtení souboru JSON. Poté je soubor analyzován pomocí metody json.load(), která nám poskytne slovník s názvem data.

Python3




import> json> # Opening JSON file> f> => open> (> 'data.json'> ,)> # returns JSON object as> # a dictionary> data> => json.load(f)> # Iterating through the json> # list> for> i> in> data[> 'emp_details'> ]:> > print> (i)> # Closing file> f.close()>

Výstup:

python-read-json-output1

Převeďte Python Dict na JSON

V níže uvedeném kódu převádíme a Pythonský slovník k objektu JSON pomocí json.dumps() metoda modulu JSON v Pythonu. Nejprve importujeme modul JSON a poté vytvoříme malý slovník s několika páry klíč–hodnota a poté jej předáme metodě json.dumps() s ‚indent=4‘, abychom tento slovník Pythonu převedli na objekt JSON. Protože jsme dali hodnotu odsazení 4, před každým datem jsou čtyři mezery, jak je vidět na výstupu.

Python3




# Python program to convert> # Python to JSON> import> json> > # Data to be written> dictionary> => {> > 'id'> :> '04'> ,> > 'name'> :> 'sunil'> ,> > 'department'> :> 'HR'> }> > # Serializing json> json_object> => json.dumps(dictionary, indent> => 4> )> print> (json_object)>

Výstup

{ 'id': '04', 'name': 'sunil', 'department': 'HR' } 

Následující typy objektů Pythonu lze převést na řetězce JSON:

Objekty Pythonu a jejich ekvivalentní převod na JSON:

Krajta

Ekvivalent JSON

diktát

objekt

seznam, n-tice

pole

str

tětiva

int, plovoucí

číslo

Skutečný

skutečný

Nepravdivé

Nepravdivé

Žádný

nula

Zápis JSON do souboru v Pythonu

JSON můžeme zapsat do souboru pomocí funkce json.dump() modulu JSON a zpracování souborů v Pythonu. V níže uvedeném programu jsme otevřeli soubor s názvem sample.json v režimu zápisu pomocí 'V' . Pokud soubor neexistuje, bude vytvořen. Json.dump() převede slovník Pythonu na řetězec JSON a uloží se do souboru sample.json.

Python3




# Python program to write JSON> # to a file> import> json> > # Data to be written> dictionary> => {> > 'name'> :> 'sathiyajith'> ,> > 'rollno'> :> 56> ,> > 'cgpa'> :> 8.6> ,> > 'phonenumber'> :> '9976770500'> }> > with> open> (> 'sample.json'> ,> 'w'> ) as outfile:> > json.dump(dictionary, outfile)>

Výstup:

python-json-write-to-file

Python Pretty Print JSON

Když převedeme řetězec na JSON, data jsou v méně čitelném formátu. Aby to bylo čitelnější, můžeme použít pěkný tisk předáním dalších argumentů ve funkci json.dumps(), jako je Odrážka a sort_keys jak se používá v níže uvedeném kódu.

Python3




# Python program to convert JSON to Python> import> json> # JSON string> employee> => '{'id':'09', 'name': 'Nitin', 'department':'Finance'}'> # Convert string to Python dict> employee_dict> => json.loads(employee)> # Pretty Printing JSON string back> print> (json.dumps(employee_dict, indent> => 4> , sort_keys> => True> ))>

Výstup

{ 'department': 'Finance', 'id': '09', 'name': 'Nitin' }