JSON Parsing Prosty przewodnik

  • Edmund Richardson
  • 0
  • 1333
  • 46
Reklama

JSON (oznacza “JavaScript Object Notation”) to format tekstowy, który ułatwia wymianę danych między różnymi aplikacjami. Na przykład aplikacja napisana w C ++ Jak naprawić błędy środowiska wykonawczego Windows Visual C ++ Jak naprawić błędy środowiska wykonawczego Windows Visual C ++ Błędy wizualne C ++ są częstym problemem dla użytkowników systemu Windows. Ale czy wiesz jak je naprawić? działający w systemie Windows może łatwo wymieniać dane JSON z aplikacją napisaną w Pythonie i działającą w systemie Linux. Jego prostota i elastyczność doprowadziły do ​​powszechnego użycia w ostatnich latach, zwłaszcza w porównaniu do wcześniejszych formatów opartych na XML.

Dostępne są biblioteki i zestawy narzędzi do analizowania i generowania JSON z prawie dowolnego języka i środowiska. Ten artykuł koncentruje się na metodach i problemach wynikających z przetwarzania JSON przy użyciu Pythona.

Niektóre próbki JSON

Najczęstszym bytem JSON, z którym się spotkasz, jest obiekt: zestaw mapowań klucz-wartość w formacie pokazanym poniżej.

person.json:

„firstName”: „Alice”, „lastName”: „Hall”, „age”: 35 

Oto jak możesz reprezentować tablicę obiektów. W tej reprezentacji każdy element tablicy jest obiektem. Poniżej znajduje się przykład pensji graczy w baseball.

salaries.json:

[„rok”: 1985, „teamId”: „ATL”, „LeagueId”: „NL”, „playerId”: „barkele01”, „wynagrodzenie”: 870000, „rok”: 1985, „teamId”: „ATL”, „LeagueId”: „NL”, „playerId”: „bedrost01”, „wynagrodzenie”: 550000] 

Oczywiście możesz reprezentować także szereg skalarów. To wygląda tak:

[„hello”, „world”, 35] 

Analiza JSON w Pythonie

Python Jak uzyskać komunikację w Pythonie i JavaScript za pomocą JSON Jak uzyskać komunikację w Pythonie i JavaScript za pomocą JSON Dzisiaj pokażę Ci, jak używać JSON do wysyłania danych z JavaScript do Pythona. Omówię konfigurację serwera WWW wraz z całym potrzebnym kodem. zapewnia json moduł, którego można używać zarówno do analizowania JSON, jak i do generowania JSON z obiektów i list Pythona.

Poniższy fragment kodu pokazuje, jak otworzyć plik JSON i załadować dane do zmiennej.

zaimportuj json z open ('sample.json', 'r') jako fp: obj = json.load (fp) 

Jeśli masz ciąg znaków zawierający dane JSON, możesz przekonwertować go na obiekt (lub listę) Pythona za pomocą:

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

Aby przeanalizować adres URL JSON, możesz utworzyć obiekt URL za pomocą urllib2 I użyć json.load () jak wcześniej.

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

Obsługa błędów

Gdy JSON ma błędy, otrzymasz ValueError. Możesz sobie z tym poradzić i w razie potrzeby podjąć działania naprawcze.

try: obj = json.loads ("" "" firstName ":" Alice "," lastName: "Hall", "age": 35 "" ") z wyjątkiem błędu ValueError: print„ błąd ładowania JSON ”

Przetwarzanie JSON z wiersza poleceń

Czasami przydaje się parsowanie JSON za pomocą wiersza poleceń python, być może w celu sprawdzenia błędów lub uzyskania ładnie wciętych danych wyjściowych.

cat glosariusz.json # drukuje "Glosariusz": "GlossDiv": "GlossList": "GlossEntry": "GlossDef": "GlossSeeAlso": ["GML", "XML"], "para": „Język meta-znaczników, używany do tworzenia języków znaczników, takich jak DocBook.”, „GlossSee”: „markup”, „Acronym”: „SGML”, „GlossTerm”: „Standard Generalized Markup Language”, „Abbrev”: „ISO 8879: 1986”, „SortAs”: „SGML”, „ID”: „SGML”, „tytuł”: „S”, „tytuł”: „przykładowy słownik” 

Aby uzyskać wcięte dane wyjściowe z powyższego pliku JSON, możesz wykonać następujące czynności:

python -mjson.tool glossary.json # print "Glosariusz": "GlossDiv": "GlossList": "GlossEntry": "Skrót": "ISO 8879: 1986", "Akronim": "SGML", „GlossDef”: „GlossSeeAlso”: [„GML”, „XML”], „para”: „Język meta-znaczników, używany do tworzenia języków znaczników, takich jak DocBook”. , „GlossSee”: „markup”, „GlossTerm”: „Standardowy uogólniony język znaczników”, „ID”: „SGML”, „SortAs”: „SGML”, „title”: „S”, „title „:„ przykładowy słownik ” 

Oto, w jaki sposób można załadować obiekt JSON do Pythona i wyodrębnić tylko to, czego potrzebujesz.

python -c 'import json; fp = open („glossary.json”, „r”); obj = json.load (fp); fp.close (); print obj ["glosariusz"] ["tytuł"] '# drukuje przykładowy słownik

Dostęp do danych

Po załadowaniu danych JSON do zmiennej python można uzyskać dostęp do danych tak, jak w przypadku dowolnego słownika python (lub listy, zależnie od przypadku). Na przykład powyższe dane JSON są dostępne w następujący sposób:

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

Typy danych

Typy danych są automatycznie określane na podstawie danych. Zauważ, że wiek jest analizowany jako liczba całkowita.

typ wydruku (obj [„firstName”]), typ (obj [„lastName”]), typ (obj [„age”]) # print    

Poniższa tabela konwersji służy do konwersji z JSON na python.

Analizowanie JSON przy użyciu klasy niestandardowej

Domyślnie obiekt JSON jest przetwarzany w python dyktować. Czasami może zaistnieć potrzeba automatycznego utworzenia obiektu własnej klasy na podstawie danych JSON. Możesz to zrobić, określając hak obiektowy funkcja, która obsługuje konwersję. Poniższy przykład pokazuje, jak to zrobić.

Oto niestandardowa klasa reprezentująca Osoba.

klasa 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) 

Instancja tej klasy jest tworzona przez przekazanie wymaganych argumentów w następujący sposób:

person = Person („Crystal”, „Newell”, 27) 

Aby użyć tej klasy do tworzenia instancji podczas analizowania JSON, potrzebujesz pliku hak obiektowy funkcja zdefiniowana w następujący sposób: Funkcja odbiera python dyktować i zwraca obiekt poprawnej klasy.

def obj_creator (d): return Person (d ['firstName'], d ['lastName'], d ['age']) 

Możesz teraz tego użyć hak obiektowy funkcja podczas wywoływania parsera JSON.

z otwartym ('sample.json', 'r') jako fp: obj = json.load (fp, object_hook = obj_creator) print obj # print "firstName" = "Alice", "lastName" = "Hall", " wiek ”= 35 

Przykłady użycia JSON

JSON jest obecnie bardzo popularny. Wiele stron internetowych i aplikacji SaaS (Software As A Service) oferuje dane wyjściowe JSON, które mogą być wykorzystywane bezpośrednio przez aplikacje. Niektóre z publicznie dostępnych obejmują:

  • StackOverflow / StackExchange. Oto adres URL, który zwraca listę pytań w formacie JSON.
  • GitHub oferuje interfejs API JSON na https://developer.github.com/v3/.
  • A oto interfejs API Flickr: https://developer.yahoo.com/flickr/.

Jeśli szukasz więcej przykładów na to, jak dobrze go wykorzystać, zapoznaj się z tym przewodnikiem dotyczącym budowania bota w mediach społecznościowych przy użyciu Pythona.

Czy używasz JSON do konsumpcji lub świadczenia usług? I czy używasz Pythona w stosie technologii? Wyjaśnij w komentarzach poniżej.




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.