JSON Python Parsing: Panduan Mudah

JSON Python Parsing: Panduan Mudah

JSON (singkatan dari 'JavaScript Object Notation') adalah format berdasarkan teks yang memudahkan pertukaran data antara aplikasi yang beragam. Contohnya, aplikasi ditulis dalam C ++ berjalan di Windows dengan mudah dapat menukar data JSON dengan aplikasi yang ditulis dalam python dan berjalan di Linux. Kesederhanaan dan kelenturannya telah menyebabkan penggunaan yang meluas dalam beberapa tahun kebelakangan ini, terutama dalam memilih format berasaskan XML sebelumnya.





Terdapat perpustakaan dan alat yang tersedia untuk menghuraikan dan menghasilkan JSON dari hampir semua bahasa dan persekitaran. Artikel ini menumpukan pada kaedah dan masalah yang timbul daripada memproses JSON menggunakan python.





Sebilangan Contoh JSON

Entiti JSON yang paling biasa yang akan anda hadapi adalah objek : satu set pemetaan nilai-kunci dalam format yang ditunjukkan di bawah.





siri jam tangan epal 6 vs 3

orang.json:

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

Inilah cara anda dapat mewakili pelbagai objek. Dalam representasi ini, setiap item array adalah objek. Berikut adalah contoh gaji pemain besbol.



gaji.json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

Sudah tentu, anda juga boleh mewakili pelbagai skalar. Ia kelihatan seperti ini:





[
'hello',
'world',
35
]

Menghuraikan JSON di Python

Python menyediakan json modul yang dapat digunakan untuk menghuraikan JSON, serta menghasilkan JSON dari objek dan senarai python.

Coretan kod berikut menunjukkan cara membuka fail JSON dan memuatkan data ke dalam pemboleh ubah.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

Apabila anda mempunyai rentetan yang mengandungi data JSON, anda boleh menukarnya menjadi objek python (atau senarai) dengan yang berikut:

windows tidak dapat berkomunikasi dengan pelayan dns
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Untuk menguraikan URL JSON, anda boleh membuat objek URL menggunakan uribib2 dan gunakan json.load () seperti dahulu.

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

Kesalahan Mengendalikan

Apabila JSON mempunyai kesilapan, anda akan mendapat Kesalahan Nilai . Anda boleh mengatasinya dan mengambil tindakan pembetulan sekiranya diperlukan.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

Menghuraikan JSON Dari Baris Perintah

Kadang-kadang, adalah berguna untuk menguraikan JSON menggunakan baris perintah python, mungkin untuk memeriksa kesilapan atau untuk mendapatkan output lekukan yang baik.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Untuk mendapatkan output lekukan dari fail JSON di atas, anda boleh melakukan perkara berikut:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

Dan inilah cara anda memuatkan objek JSON ke dalam python dan hanya mengekstrak apa yang anda perlukan.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

Mengakses Data

Sebaik sahaja anda memuatkan data JSON ke dalam pemboleh ubah python, anda boleh mengakses data seperti mana yang ditentukan oleh python (atau senaraikan mengikut kesesuaiannya). Sebagai contoh, data JSON di atas dapat diakses seperti berikut:

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

Jenis Data

Jenis data ditentukan secara automatik dari data. Perhatikan bahawa umur diuraikan sebagai bilangan bulat.

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

Jadual penukaran berikut digunakan untuk menukar dari JSON ke python.

Menghuraikan JSON Menggunakan Kelas Tersuai

Secara lalai, objek JSON adalah dihuraikan menjadi ular sawa imlak . Kadang-kadang anda mungkin perlu membuat objek kelas anda secara automatik dari data JSON. Anda boleh melakukannya dengan menentukan objek_hook fungsi yang mengendalikan penukaran. Contoh berikut menunjukkan bagaimana.

Berikut adalah kelas khusus yang mewakili a Orang .

class Person:
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)

Contoh kelas ini dibuat dengan menyampaikan argumen yang diperlukan seperti berikut:

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

Untuk menggunakan kelas ini untuk membuat contoh ketika menguraikan JSON, anda memerlukan objek_hook fungsi ditakrifkan seperti berikut: Fungsi menerima ular sawa imlak dan mengembalikan objek kelas yang betul.

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

Anda kini boleh menggunakan ini objek_hook berfungsi semasa memanggil penghurai JSON.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

Contoh Penggunaan JSON

JSON kini sangat popular. Banyak laman web dan aplikasi SaaS (Perisian Sebagai Perkhidmatan) menawarkan output JSON yang dapat dimakan secara langsung oleh aplikasi. Beberapa yang tersedia untuk umum termasuk:

  • StackOverflow / StackExchange. Berikut adalah URL yang mengembalikan senarai soalan dalam format JSON.
  • GitHub menawarkan api JSON di https://developer.github.com/v3/.
  • Dan inilah API Flickr: https://developer.yahoo.com/flickr/.

Sekiranya anda mencari lebih banyak contoh mengenai cara menggunakannya dengan baik, lihat panduan ini ke membina bot media sosial menggunakan Python .

apakah mod potret pada iphone 7

Adakah anda menggunakan JSON untuk mengambil atau menyediakan perkhidmatan? Dan adakah anda menggunakan python dalam timbunan teknologi anda? Jelaskan dalam komen di bawah.

Berkongsi Berkongsi Tweet E-mel Adakah Perlu Ditingkatkan ke Windows 11?

Windows telah direka bentuk semula. Tetapi apakah itu cukup untuk meyakinkan anda untuk beralih dari Windows 10 ke Windows 11?

Baca Seterusnya
Topik-topik yang berkaitan
  • Pengaturcaraan
  • Pengaturcaraan
  • Python
Mengenai Pengarang Jay Sridhar(17 Artikel Diterbitkan) Lagi Dari Jay Sridhar

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan