JSON Python analyzuje jednoduchý průvodce

  • Peter Holmes
  • 0
  • 915
  • 132
reklama

JSON (znamená “Notace objektu JavaScript”) je textový formát, který usnadňuje výměnu dat mezi různými aplikacemi. Například aplikace napsaná v C ++ Jak opravit chyby Windows Runtime Windows Visual C ++ Jak opravit chyby Windows Runtime Windows Visual C ++ Chyby Visual C ++ jsou běžným problémem pro uživatele Windows. Ale víte, jak je opravit? běžící na Windows mohou snadno vyměňovat data JSON s aplikací napsanou v Pythonu a běžící na Linuxu. Jeho jednoduchost a flexibilita vedla v posledních letech k rozsáhlému používání, zejména v porovnání s dřívějšími formáty založenými na XML.

K dispozici jsou knihovny a sady nástrojů pro analýzu a generování JSON z téměř jakéhokoli jazyka a prostředí. Tento článek se zaměřuje na metody a problémy vznikající při zpracování JSON pomocí pythonu.

Některé vzorky JSON

Nejběžnější entitou JSON, se kterou se setkáte, je objekt: sada mapování klíč-hodnota ve níže uvedeném formátu.

person.json:

"firstName": "Alice", "lastName": "Hall", "age": 35 

Takto můžete reprezentovat řadu objektů. V této reprezentaci je každá položka pole objektem. Následuje ukázka platů hráčů baseballu.

salaries.json:

["rok": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "barkele01", "plat": 870000, "rok": 1985, "teamId": "ATL", "leagueId": "NL", "playerId": "bedrost01", "plat": 550000] 

Samozřejmě můžete také reprezentovat řadu skalárů. Vypadá to takto:

["ahoj", "svět", 35] 

Analýza JSON v Pythonu

Python Jak získat Python a JavaScript ke komunikaci pomocí JSON Jak získat Python a JavaScript ke komunikaci pomocí JSON Dnes vám ukážu, jak pomocí JSON posílat data z JavaScriptu do Pythonu. Pokryju, jak nastavit webový server, spolu se všemi potřebnými kódy. poskytuje json modul, který lze použít jak k analýze JSON, tak ik vygenerování JSON z pythonových objektů a seznamů.

Následující fragment kódu ukazuje, jak otevřít soubor JSON a načíst data do proměnné.

import json s open ('sample.json', 'r') jako fp: obj = json.load (fp) 

Pokud máte řetězec obsahující data JSON, můžete je převést na pythonový objekt (nebo seznam) s následujícím:

obj = json.loads ("" "" firstName ":" Alice "," lastName ":" Hall "," age ": 35" "") 

Chcete-li analyzovat adresu JSON, můžete vytvořit objekt URL pomocí urllib2 a použití json.load () jako dříve.

import urllib2, json url = urllib2.urlopen ('http://site.com/sample.json') obj = json.load (url) 

Chyby při manipulaci

Když má JSON chyby, dostanete ValueError. Můžete to zvládnout a v případě potřeby podniknout nápravná opatření.

try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ")) s výjimkou ValueError: print" error loading JSON "

Analýza JSON z příkazového řádku

Někdy je užitečné analyzovat JSON pomocí příkazového řádku python, snad zkontrolovat chyby nebo získat pěkně odsazený výstup.

catlossary.json # print glosář ": " GlossDiv ": " GlossList ": " GlossEntry ": " GlossDef ": " GlossSeeAlso ": [" GML "," XML "]," para ": "Meta-značkovací jazyk, používaný k vytváření značkovacích jazyků, jako je DocBook.", "GlossSee": "markup", "Zkratka": "SGML", "GlossTerm": "Standardní generalizovaný značkovací jazyk", "Zkratka": "ISO 8879: 1986", "SortAs": "SGML", "ID": "SGML", "title": "S", "title": "příkladový slovník" 

Chcete-li získat odsazený výstup z výše uvedeného souboru JSON, můžete udělat následující:

python -mjson.toollossary.json # print "lossary ": " GlossDiv ": " GlossList ": " GlossEntry ": " Abbrev ":" ISO 8879: 1986 "," Zkratka ":" SGML ", "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": "Meta-značkovací jazyk, který se používá k vytváření značkovacích jazyků, jako je DocBook." , "GlossSee": "značení", "GlossTerm": "standardní generalizovaný značkovací jazyk", "ID": "SGML", "SortAs": "SGML", "title": "S", "title ":" příkladový slovník " 

A takto je možné načíst objekt JSON do pythonu a extrahovat pouze to, co potřebujete.

python -c 'import json; fp = open ("glossary.json", "r"); obj = json.load (fp); fp.close (); print obj ["glosář"] ["název"] '# # vytiskne příklad glosáře

Přístup k datům

Jakmile načtete data JSON do proměnné python, můžete k datům přistupovat stejně jako jakýkoli python dikt (případně seznam). Například výše uvedená data JSON jsou přístupná následujícím způsobem:

firstName = obj ["firstName"] lastName = obj ["Hall"] age = obj ["age"] 

Typy dat

Typy dat jsou automaticky určeny z dat. Všimněte si, že stáří je analyzováno jako celé číslo.

print type (obj ["firstName"]), type (obj ["lastName"]), type (obj ["age"]) # prints    

Následující převodní tabulka se používá k převodu z JSON na python.

Analýza JSON pomocí vlastní třídy

Ve výchozím nastavení je objekt JSON analyzován do pythonu dikt. Někdy budete možná muset automaticky vytvořit objekt své vlastní třídy z dat JSON. Můžete to provést zadáním object_hook funkce, která zpracovává převod. Následující příklad ukazuje, jak.

Zde je vlastní třída představující a Osoba.

třída Osoba: def __init __ (self, firstName, lastName, age): self.firstName = firstName self.lastName = lastName self.age = age def __str __ (self): return '"firstName" = "0", "lastName" = "1", "age" = 2 '. format (self.firstName, self.lastName, self.age) 

Instance této třídy je vytvořena předáním požadovaných argumentů následujícím způsobem:

person = Person ("Crystal", "Newell", 27) 

Chcete-li tuto třídu použít k vytváření instancí při analýze JSON, potřebujete object_hook funkce definována následovně: Funkce přijímá python dikt a vrátí objekt správné třídy.

def obj_creator (d): návratová osoba (d ['firstName'], d ['lastName'], d ['age']) 

Nyní můžete použít toto object_hook funkce při vyvolání syntaktického analyzátoru JSON.

s open ('sample.json', 'r') jako fp: obj = json.load (fp, object_hook = obj_creator) print obj # prints "firstName" = "Alice", "lastName" = "Hall", " věk "= 35 

Příklady použití JSON

JSON je dnes velmi populární. Mnoho webových stránek a aplikací SaaS (Software As A Service) nabízí výstup JSON, který lze přímo spotřebovat aplikacemi. Mezi veřejně dostupné patří:

  • StackOverflow / StackExchange. Zde je adresa URL, která vrací seznam otázek ve formátu JSON.
  • GitHub nabízí rozhraní JSON na adrese https://developer.github.com/v3/.
  • A tady je Flickr API: https://developer.yahoo.com/flickr/.

Pokud hledáte více příkladů, jak to správně využít, podívejte se do této příručky k vytváření botu sociálních médií pomocí Pythonu..

Používáte JSON ke spotřebě nebo poskytování služeb? A používáte python ve svém technologickém zásobníku? Vysvětlete níže uvedené komentáře.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.