
Peter Holmes
0
915
132
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.