Python JSON: Kódolás (kiíratások), Dekódolás (betöltés) és JSON-fájl olvasása
Miben van a JSON? Python?
JSON in Python által ihletett szabványos formátum JavaSzkript adatcseréhez és adatátvitelhez szöveges formátumban hálózaton keresztül. A JSON általában karakterlánc- vagy szövegformátumú. API-k és adatbázisok használhatják, és az objektumokat név/érték párokként jeleníti meg. A JSON jelentése JavaScript objektum jelölése.
Python JSON szintaxis:
A JSON kulcs és érték párként van írva.
{
"Key": "Value",
"Key": "Value",
}
A JSON nagyon hasonlít a Python szótár. Python támogatja a JSON-t, és JSON-ként beépített könyvtárral rendelkezik.
JSON-könyvtár itt Python
"marsall"És a"savanyú uborka' külső moduljai Python verzióját karbantartani JSON Python könyvtár. Munka a JSON-val Python a JSON-hoz kapcsolódó műveletek, például a kódolás és dekódolás végrehajtásához először meg kell tennie importál JSON-könyvtár és ehhez az Ön .py fájl
import json
A következő módszerek állnak rendelkezésre a JSON-ban Python modul
| Módszer | Leírás |
|---|---|
| guba() | kódolás JSON objektumokhoz |
| lerak() | kódolt karakterlánc írása a fájlra |
| loads() | Dekódolja a JSON karakterláncot |
| Betöltés() | Dekódolás JSON-fájl olvasása közben |
Python JSON-ra (kódolás)
JSON könyvtára Python következő fordítását végzi el Python az objektumokat alapértelmezés szerint JSON objektumokká
| Python | JSON |
|---|---|
| diktálja | tárgy |
| lista | Sor |
| unicode | Húr |
| szám – int, long | szám – int |
| úszik | szám – valós |
| Igaz | Igaz |
| Hamis | Hamis |
| Egyik sem | Null |
áttérés Python Az adatokat a JSON-ba kódolási műveletnek nevezik. A kódolás a JSON könyvtár módszer segítségével történik - guba()
A JSON kiírja () Python
json.dumps() in Python egy olyan módszer, amely átalakítja a szótár objektumait Python JSON karakterlánc adatformátumba. Akkor hasznos, ha az objektumoknak karakterlánc formátumban kell lenniük az olyan műveletekhez, mint az elemzés, a nyomtatás stb.
Most végre hajtjuk végre az első json.dumps kódolási példánkat a következővel Python:
import json
x = {
"name": "Ken",
"age": 45,
"married": True,
"children": ("Alice","Bob"),
"pets": ['Dog'],
"cars": [
{"model": "Audi A1", "mpg": 15.1},
{"model": "Zeep Compass", "mpg": 18.1}
]
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
output:
{"person": {"name": "Kenn", "sex": "male", "age": 28}})
Lássunk egy példát Python írjon JSON-t a fájlba a szótár JSON-fájljának létrehozásához ugyanazzal a funkcióval lerak()
# here we create new data_file.json file with write mode using file i/o operation
with open('json_file.json', "w") as file_write:
# write json data into file
json.dump(person_data, file_write)
output:
Nincs mit megjeleníteni… A rendszerben létrejön a json_file.json fájl. Ellenőrizheti a fájlt az alábbiak szerint: írja be a JSON-t fájlba Python példa.
JSON ide Python (Dekódolás)
A JSON karakterlánc-dekódolás a beépített módszer segítségével történik json.loads() & json.load() JSON-könyvtárból Python. Itt a fordítási táblázat példát mutat a JSON-objektumokra Python objektumok amelyek hasznosak a dekódolás végrehajtásában Python JSON karakterláncból.
| JSON | Python |
|---|---|
| tárgy | diktálja |
| Sor | lista |
| Húr | unicode |
| szám – int | szám – int, long |
| szám – valós | úszik |
| Igaz | Igaz |
| Hamis | Hamis |
| Null | Egyik sem |
Lássunk egy alapvető JSON-elemzést Python segítségével dekódolásra példa json.loads funkció,
import json # json library imported
# json data string
person_data = '{ "person": { "name": "Kenn", "sex": "male", "age": 28}}'
# Decoding or converting JSON format in dictionary using loads()
dict_obj = json.loads(person_data)
print(dict_obj)
# check type of dict_obj
print("Type of dict_obj", type(dict_obj))
# get human object details
print("Person......", dict_obj.get('person'))
output:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj <class 'dict'>
Person...... {'name': 'John', 'sex': 'male'}
JSON-fájl dekódolása vagy JSON-fájl elemzése Python
Most megtanuljuk, hogyan kell beolvasni a JSON-fájlt Python ahol Python JSON elemzési példa:
JEGYZET: A JSON-fájl dekódolása a fájlbemenettel/kimenettel (I/O) kapcsolatos művelet. A JSON-fájlnak léteznie kell a rendszeren a programban megadott helyen.
Python JSON fájl olvasása Példa:
import json
#File I/O Open function for read data from JSON File
with open('X:/json_file.json') as file_object:
# store file data in object
data = json.load(file_object)
print(data)
Itt az adatok szótári tárgya Python ahogy az a fenti olvasott JSON-fájlban látható Python példa.
output:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Kompakt kódolás be Python
Ha csökkentenie kell a JSON-fájl méretét, használhat kompakt kódolást Python.
Példa,
import json
# Create a List that contains dictionary
lst = ['a', 'b', 'c',{'4': 5, '6': 7}]
# separator used for compact representation of JSON.
# Use of ',' to identify list items
# Use of ':' to identify key and value in dictionary
compact_obj = json.dumps(lst, separators=(',', ':'))
print(compact_obj)
output:
'["a", "b", "c", {"4": 5, "6": 7}]'
** Here output of JSON is represented in a single line which is the most compact representation by removing the space character from compact_obj **
JSON-kód formázása (szép nyomtatás)
- A cél az, hogy jól formázott kódot írjanak az emberi megértéshez. A szép nyomtatás segítségével bárki könnyen megértheti a kódot.
Példa:
import json
dic = { 'a': 4, 'b': 5 }
''' To format the code use of indent and 4 shows number of space and use of separator is not necessary but standard way to write code of particular function. '''
formatted_obj = json.dumps(dic, indent=4, separators=(',', ': '))
print(formatted_obj)
output:
{
"a" : 4,
"b" : 5
}
Ennek jobb megértéséhez módosítsa a behúzást 40-re, és figyelje meg a kimenetet-
JSON kód megrendelése:
sort_keys tulajdonság be Python A dumps függvény argumentuma növekvő sorrendbe rendezi a kulcsot a JSON-ban. A sort_keys argumentum egy logikai attribútum. Ha igaz, a válogatás megengedett, egyébként nem. Értsük meg vele Python string to JSON rendezési példa.
Példa,
import json
x = {
"name": "Ken",
"age": 45,
"married": True,
"children": ("Alice", "Bob"),
"pets": [ 'Dog' ],
"cars": [
{"model": "Audi A1", "mpg": 15.1},
{"model": "Zeep Compass", "mpg": 18.1}
],
}
# sorting result in asscending order by keys:
sorted_string = json.dumps(x, indent=4, sort_keys=True)
print(sorted_string)
output:
{
"age": 45,
"cars": [ {
"model": "Audi A1",
"mpg": 15.1
},
{
"model": "Zeep Compass",
"mpg": 18.1
}
],
"children": [ "Alice",
"Bob"
],
"married": true,
"name": "Ken",
"pets": [
"Dog"
]
}
Ahogy láthatja a kulcsok korát, az autók, gyerekek stb. növekvő sorrendben vannak elrendezve.
Összetett objektum kódolása Python
Egy összetett objektumnak két különböző része van
- Valódi rész
- Képzeletbeli rész
Példa: 3 +2i
Egy összetett objektum kódolásának végrehajtása előtt ellenőriznie kell, hogy egy változó összetett-e vagy sem. Létre kell hoznia egy függvényt, amely egy példánymódszer segítségével ellenőrzi a változóban tárolt értéket.
Hozzuk létre az objektum összetett vagy kódolásra alkalmas ellenőrzéséhez az adott függvényt.
import json
# create function to check instance is complex or not
def complex_encode(object):
# check using isinstance method
if isinstance(object, complex):
return [object.real, object.imag]
# raised error using exception handling if object is not complex
raise TypeError(repr(object) + " is not JSON serialized")
# perform json encoding by passing parameter
complex_obj = json.dumps(4 + 5j, default=complex_encode)
print(complex_obj)
output:
'[4.0, 5.0]'
Komplex JSON objektum dekódolás be Python
Az összetett objektum JSON-ban való dekódolásához használjon egy object_hook paramétert, amely ellenőrzi, hogy a JSON-karakterlánc tartalmazza-e az összetett objektumot vagy sem. Lehetővé teszi, hogy megértsük a JSON-ba írt karakterlánccal Python Példa,
import json
# function check JSON string contains complex object
def is_complex(objct):
if '__complex__' in objct:
return complex(objct['real'], objct['img'])
return objct
# use of json loads method with object_hook for check object complex or not
complex_object =json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex)
#here we not passed complex object so it's convert into dictionary
simple_object =json.loads('{"real": 6, "img": 7}', object_hook = is_complex)
print("Complex_object......",complex_object)
print("Without_complex_object......",simple_object)
output:
Complex_object...... (4+5j)
Without_complex_object...... {'real': 6, 'img': 7}
A JSON sorozatosítási osztály áttekintése, a JSONEncoder
A JSONEncoder osztály bármely szerializálására használható Python objektumot a kódolás végrehajtása közben. Három különböző kódolási módszert tartalmaz, amelyek
- alapértelmezett (o) – Az alosztályban és a visszatérési serialize objektumban implementálva o tárgy.
- kódol(o) – Ugyanaz, mint a JSON kiíratások Python metódus return JSON string of Python adatszerkezet.
- iterencode(o) – Egyesével ábrázolja a karakterláncot, és kódolja az o objektumot.
A JSONEncoder osztály encode() metódusa segítségével bármilyen kódolható Python tárgyat az alábbiak szerint Python JSON kódoló példa.
# import JSONEncoder class from json
from json.encoder import JSONEncoder
colour_dict = { "colour": ["red", "yellow", "green" ]}
# directly called encode method of JSON
JSONEncoder().encode(colour_dict)
output:
'{"colour": ["red", "yellow", "green"]}'
A JSON Deserialization osztály JSONDecoder áttekintése
A JSONDecoder osztály bármely deszerializálására használható Python objektumot dekódolás közben. Három különböző dekódolási módszert tartalmaz, amelyek
- alapértelmezett (o) – Az alosztályban implementálva, és visszaadja a deserializált objektumot o tárgy.
- dekódolás(o) – Ugyanaz, mint a json.loads() metódus visszatérése Python JSON karakterlánc vagy adat adatszerkezete.
- nyers_dekód(o) – Képviseli Python szótár egyesével és dekódolja az o objektumot.
A JSONDecoder osztály decode() metódusával a JSON karakterláncot is dekódolhatjuk az alábbiak szerint Python JSON dekóder példa.
import json
# import JSONDecoder class from json
from json.decoder import JSONDecoder
colour_string = '{ "colour": ["red", "yellow"]}'
# directly called decode method of JSON
JSONDecoder().decode(colour_string)
output:
{'colour': ['red', 'yellow']}
JSON-adatok dekódolása az URL-ből: valós példa
A CityBike NYC (Bike Sharing System) adatait a megadott URL-ről (https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json), és konvertálja szótár formátumba.
Python JSON betöltése fájlból Példa:
MEGJEGYZÉS: - Győződjön meg arról, hogy a kérések könyvtára már telepítve van Python, Ha nem, nyissa meg a terminált vagy a CMD-t, és írja be
- (For Python 3 vagy újabb) pip3 telepítési kérések
import json
import requests
# get JSON string data from CityBike NYC using web requests library
json_response= requests.get("https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json")
# check type of json_response object
print(type(json_response.text))
# load data in loads() function of json library
bike_dict = json.loads(json_response.text)
#check type of news_dict
print(type(bike_dict))
# now get stationBeanList key data from dict
print(bike_dict['stationBeanList'][0])
output:
<class 'str'>
<class 'dict'>
{
'id': 487,
'stationName': 'E 20 St & FDR Drive',
'availableDocks': 24,
'totalDocks': 34,
'latitude': 40.73314259,
'longitude': -73.97573881,
'statusValue': 'In Service',
'statusKey': 1,
'availableBikes': 9,
'stAddress1': 'E 20 St & FDR Drive',
'stAddress2': '',
'city': '',
'postalCode': '',
'location': '',
'altitude': '',
'testStation': False,
'lastCommunicationTime': '2018-12-11 10:59:09 PM', 'landMark': ''
}
JSON-könyvtárral kapcsolatos kivételek itt Python:
- Osztály json.JSONDecoderError kezeli a dekódolási művelettel kapcsolatos kivételt. és ez egy alosztálya ValueError.
- Kivétel - json.JSONDecoderError(msg, doc)
- A kivétel paraméterei:
- msg – Formázatlan hibaüzenet
- doc – JSON-dokumentumok elemzése megtörtént
- pos – a doc index indítása, ha az meghiúsult
- lineno – a nem mutatott sorok megfelelnek a poz
- kettőspont – az oszlop nem felel meg a poz
Python JSON betöltése fájlból Példa:
import json
#File I/O Open function for read data from JSON File
data = {} #Define Empty Dictionary Object
try:
with open('json_file_name.json') as file_object:
data = json.load(file_object)
except ValueError:
print("Bad JSON file format, Change JSON File")
Végtelen és NaN Numbers in Python
A JSON Data Interchange Format (RFC – Request For Comments) nem engedélyezi a végtelen vagy a Nan értéket, de nincs korlátozás Python- JSON Library végtelen és Nan értékkel kapcsolatos műveletek végrehajtásához. Ha a JSON INFINITE és Nan adattípust kap, akkor azt literálra konvertálja.
Példa,
import json
# pass float Infinite value
infinite_json = json.dumps(float('inf'))
# check infinite json type
print(infinite_json)
print(type(infinite_json))
json_nan = json.dumps(float('nan'))
print(json_nan)
# pass json_string as Infinity
infinite = json.loads('Infinity')
print(infinite)
# check type of Infinity
print(type(infinite))
output:
Infinity <class 'str'> NaN inf <class 'float'>
Ismétlődő kulcs a JSON karakterláncban
Az RFC meghatározza, hogy a kulcsnévnek egyedinek kell lennie egy JSON-objektumban, de ez nem kötelező. Python A JSON-könyvtár nem tesz kivételt a JSON-ban ismétlődő objektumokról. Figyelmen kívül hagyja az összes ismétlődő kulcs-érték párt, és ezek közül csak az utolsó kulcs-érték párt veszi figyelembe.
- Példa,
import json
repeat_pair = '{"a": 1, "a": 2, "a": 3}'
json.loads(repeat_pair)
output:
{'a': 3}
CLI (Command Line Interface) JSON-val Python
json.tool parancssori felületet biztosít a JSON pretty-print szintaxis ellenőrzéséhez. Lássunk egy példát a CLI-re
$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool
output:
{
"name": " Kings Authur "
}
A JSON előnyei Python
- Könnyen visszahelyezhető a tároló és az érték között (JSON to Python és a Python JSON-ra)
- Ember által olvasható (Pretty-print) JSON-objektum
- Széles körben használják az adatkezelésben.
- Nem ugyanaz az adatstruktúra az egyetlen fájlban.
A JSON megvalósítási korlátai itt Python
- A JSON-tartomány deszerializálójában és egy szám előrejelzésében
- A JSON karakterlánc és JSON tömbök maximális hossza, valamint az objektum beágyazott szintjei.
Python JSON csalólap
| Python JSON funkció | Leírás |
|---|---|
| json.dumps(person_data) | JSON-objektum létrehozása |
| json.dump(person_data, file_write) | JSON-fájl létrehozása a fájl I/O használatával Python |
| compact_obj = json.dumps(data, separators=(',',':')) | Tömörítse a JSON-objektumot a szóköz karakterek eltávolításával a JSON-objektumból elválasztó segítségével |
| formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) | JSON-kód formázása a behúzással |
| sorted_string = json.dumps(x, indent=4, sort_keys=True) | JSON-objektumkulcs rendezése ábécé sorrendben |
| komplex_obj = json.dumps(4 + 5j, alapértelmezett=komplex_kódolás) | Python Komplex objektumkódolás JSON-ban |
| JSONEncoder().encode(colour_dict) | JSONEncoder osztály használata a sorosításhoz |
| json.loads(data_string) | JSON karakterlánc dekódolása Python szótár a json.loads() függvény használatával |
| json.loads('{"__complex__": true, "real": 4, "img": 5}', object_hook = is_complex) | Komplex JSON-objektum dekódolása ide Python |
| JSONDecoder().decode(color_string) | Dekódoló JSON használata a Python deszerializációval |








