Python JSON: Encode(dumps), Decode(loads) & Read JSON File
⚡ Smart sammanfattning
JSON är ett lätt textformat för datautbyte, och Pythons inbyggda json-modul läser och skriver den enkelt. Här lär du dig att koda Python objekt med dumps() och avkoda JSON med loads(), plus fil-I/O och mer.

Vad är JSON i Python?
JSON in Python är ett standardformat inspirerat av JavaSkript för datautbyte och dataöverföring som textformat över ett nätverk. I allmänhet är JSON i sträng- eller textformat. Det kan användas av API:er och databaser, och det representerar objekt som namn/värdepar. JSON står för JavaSkriptobjektnotation.
Python JSON-syntax:
JSON skrivs som nyckel- och värdepar.
{
"Key": "Value",
"Key": "Value",
}
JSON är väldigt lik Python lexikon. Python stöder JSON, och den har ett inbyggt bibliotek som JSON.
JSON-biblioteket i Python
'marskalk"och"ättikslag' externa moduler av Python behålla en version av JSON Python bibliotek. Arbetar med JSON i Python för att utföra JSON-relaterade operationer som kodning och avkodning måste du först importera JSON-biblioteket och för det i din .py fil,
import json
Följande metoder är tillgängliga i JSON Python modul
| Metod | BESKRIVNING |
|---|---|
| dumpar () | kodning till JSON-objekt |
| dumpa() | kodad sträng som skriver på fil |
| massor() | Avkoda JSON-strängen |
| ladda() | Avkoda medan JSON-filen läses |
Python till JSON (kodning)
JSON Bibliotek av Python utför följande översättning av Python objekt till JSON-objekt som standard
| Python | JSON |
|---|---|
| dict | Ändamålet |
| lista | array |
| unicode | Sträng |
| nummer – int, lång | nummer – int |
| flyta | nummer – verkligt |
| Sant | Sant |
| Falsk | Falsk |
| Ingen | Null |
konvertera Python data till JSON kallas en kodningsoperation. Kodning görs med hjälp av JSON-biblioteksmetoden - dumpar ()
JSON dumpar() in Python
json.dumps() in Python är en metod som konverterar ordboksobjekt av Python till JSON-strängdataformat. Det är användbart när objekten måste vara i strängformat för operationer som att analysera, skriva ut, etc.
Låt oss nu utföra vårt första json.dumps-kodningsexempel med 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)
Produktion:
{"person": {"name": "Kenn", "sex": "male", "age": 28}})
Låt oss se ett exempel på Python skriv JSON till fil för att skapa en JSON-fil för ordboken med samma funktion dumpa()
# 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)
Produktion:
Inget att visa...I ditt system skapas json_file.json. Du kan kontrollera den filen som visas i nedanstående skriv JSON till fil Python exempel.
JSON till Python (Avkodning)
JSON-strängavkodning görs med hjälp av inbyggd metod json.loads() & json.load() av JSON-biblioteket i Python. Här visar översättningstabellen exempel på JSON-objekt till Python objekt som är användbara att utföra avkodning i Python av JSON-strängen.
| JSON | Python |
|---|---|
| Ändamålet | dict |
| array | lista |
| Sträng | unicode |
| nummer – int | nummer – int, lång |
| nummer – verkligt | flyta |
| Sant | Sant |
| Falsk | Falsk |
| Null | Ingen |
Låt oss se en grundläggande parse JSON Python exempel på avkodning med hjälp av json.loads fungera,
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'))
Produktion:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj <class 'dict'>
Person...... {'name': 'John', 'sex': 'male'}
Avkodar JSON-fil eller parsar JSON-fil in Python
Nu kommer vi att lära oss hur man läser JSON-filen Python med Python tolka JSON-exempel:
OBS: Avkodning av JSON-fil är filinmatning/utgång (I/O) relaterad operation. JSON-filen måste finnas på ditt system på den angivna platsen som du nämner i ditt program.
Python läs JSON-fil Exempel:
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)
Här data är ett ordboksobjekt för Python som visas i ovanstående läs JSON-fil Python exempel.
Produktion:
{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Kompakt kodning in Python
När du behöver minska storleken på din JSON-fil kan du använda kompakt kodning in Python.
Exempel,
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)
Produktion:
'["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 **
Formatera JSON-kod (fin utskrift)
- Syftet är att skriva välformaterad kod för mänsklig förståelse. Med hjälp av snygg utskrift kan vem som helst enkelt förstå koden.
Exempel:
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)
Produktion:
{
"a" : 4,
"b" : 5
}
För att bättre förstå detta, ändra indrag till 40 och observera output-
Beställer JSON-koden:
sort_nycklar attribut i Python dumps-funktionens argument kommer att sortera nyckeln i JSON i stigande ordning. Argumentet sort_keys är ett booleskt attribut. När det är sant är sortering tillåtet annars inte. Låt oss förstå med Python sträng till JSON sorteringsexempel.
Exempel,
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)
Produktion:
{
"age": 45,
"cars": [ {
"model": "Audi A1",
"mpg": 15.1
},
{
"model": "Zeep Compass",
"mpg": 18.1
}
],
"children": [ "Alice",
"Bob"
],
"married": true,
"name": "Ken",
"pets": [
"Dog"
]
}
Som du kan observera är nycklarnas ålder, bilar, barn etc ordnade i stigande ordning.
Komplex objektkodning av Python
Ett komplext objekt har två olika delar dvs
- Verklig del
- Fantasifull del
Exempel: 3 +2i
Innan du utför kodning av ett komplext objekt måste du kontrollera att en variabel är komplex eller inte. Du måste skapa en funktion som kontrollerar värdet lagrat i en variabel med hjälp av en instansmetod.
Låt oss skapa den specifika funktionen för att kontrollera objektet är komplext eller berättigat till kodning.
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)
Produktion:
'[4.0, 5.0]'
Komplext JSON-objekt avkodar in Python
För att avkoda komplext objekt i JSON, använd en object_hook-parameter som kontrollerar att JSON-strängen innehåller det komplexa objektet eller inte. Låt oss förstå med sträng till JSON Python Exempel,
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)
Produktion:
Complex_object...... (4+5j)
Without_complex_object...... {'real': 6, 'img': 7}
Översikt över JSON Serialization class JSONEncoder
JSONEncoder-klassen används för serialisering av någon Python objekt medan du utför kodning. Den innehåller tre olika metoder för kodning som är
- default(o) – Implementerat i subklassen och returnera serialisera objekt för o objekt.
- koda(o) – Samma som JSON-dumpar Python metod returnerar JSON-sträng av Python datastruktur.
- iterencode(o) – Representera strängen en efter en och koda objekt o.
Med hjälp av encode()-metoden för JSONEncoder-klassen kan vi också koda alla Python objekt som visas nedan Python Exempel på JSON-kodare.
# 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)
Produktion:
'{"colour": ["red", "yellow", "green"]}'
Översikt över JSON Deserialization klass JSONDecoder
JSONDecoder-klassen används för deserialisering av någon Python objekt medan du utför avkodning. Den innehåller tre olika metoder för avkodning som är
- default(o) – Implementerat i subklassen och returnera deserialiserade objektet o objekt.
- avkoda(o) – Samma som json.loads()-metoden returnerar Python datastruktur för JSON-sträng eller data.
- raw_decode(o) – Representera Python ordbok en efter en och avkoda objekt o.
Med hjälp av decode()-metoden för JSONDecoder-klassen kan vi också avkoda JSON-strängen som visas nedan Python Exempel på JSON-avkodare.
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)
Produktion:
{'colour': ['red', 'yellow']}
Avkodning av JSON-data från URL: Exempel från verkligheten
Vi kommer att hämta data från CityBike NYC (Bike Sharing System) från specificerade URL(https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json) och konvertera till ordboksformat.
Python ladda JSON från fil Exempel:
OBS:- Se till att begärandebiblioteket redan är installerat i din Python, Om inte, öppna Terminal eller CMD och skriv
- (För Python 3 eller högre) pip3 installationsförfrågningar
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])
Produktion:
<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': '' }
Undantag relaterade till JSON Library i Python:
- Klass json.JSONDecoderError hanterar undantaget relaterat till avkodningsoperationen. och det är en underklass till ValueError.
- Undantag – json.JSONDecoderError(msg, doc)
- Undantagsparametrar är,
- msg – Oformaterat felmeddelande
- doc – JSON-dokument tolkade
- pos – starta indexet för dokumentet när det misslyckades
- lineno – line no show motsvarar pos
- kolon – kolumn nr motsvarar pos
Python ladda JSON från fil Exempel:
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")
Infinite och NaN Numbers in Python
JSON Data Interchange Format (RFC – Request For Comments) tillåter inte Oändligt eller Nan-värde men det finns ingen begränsning i Python- JSON-bibliotek för att utföra operationer relaterad till Infinite och Nan Value. Om JSON får INFINITE och Nan datatype så konverteras den till bokstavlig.
Exempel,
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))
Produktion:
Infinity <class 'str'> NaN inf <class 'float'>
Upprepad nyckel i JSON String
RFC anger att nyckelnamnet ska vara unikt i ett JSON-objekt, men det är inte obligatoriskt. Python JSON-biblioteket tar inte upp ett undantag för upprepade objekt i JSON. Den ignorerar alla upprepade nyckel-värde-par och tar endast hänsyn till det sista nyckel-värde-paret bland dem.
- Exempel,
import json repeat_pair = '{"a": 1, "a": 2, "a": 3}' json.loads(repeat_pair)
Produktion:
{'a': 3}
CLI (Command Line Interface) med JSON in Python
json.tool tillhandahåller kommandoradsgränssnittet för att validera JSON pretty-print-syntax. Låt oss se ett exempel på CLI
$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool
Produktion:
{
"name": " Kings Authur "
}
Fördelar med JSON i Python
- Lätt att flytta tillbaka mellan container och värde (JSON till Python och Python till JSON)
- Mänskligt läsbart (Pretty-print) JSON-objekt
- Används i stor utsträckning vid datahantering.
- Har inte samma datastruktur i den enskilda filen.
Implementeringsbegränsningar för JSON i Python
- I deserializer av JSON-intervall och förutsägelse av ett nummer
- Den maximala längden på JSON-strängen och arrayer av JSON och kapslingsnivåer för objekt.
Python JSON Cheat Sheet
| Python JSON-funktion | BESKRIVNING |
|---|---|
| json.dumps(person_data) | Skapa JSON-objekt |
| json.dump(person_data, file_write) | Skapa JSON-fil med File I/O of Python |
| compact_obj = json.dumps(data, separators=(',',':')) | Komprimera JSON-objekt genom att ta bort mellanslagstecken från JSON-objekt med hjälp av separator |
| formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) | Formatera JSON-kod med indrag |
| sorted_string = json.dumps(x, indent=4, sort_keys=True) | Sorterar JSON-objektnyckeln i alfabetisk ordning |
| complex_obj = json.dumps(4 + 5j, default=complex_encode) | Python Komplex objektkodning i JSON |
| JSONEncoder().encode(colour_dict) | Användning av JSONEncoder Class för serialisering |
| json.loads(data_string) | Avkodar JSON-sträng in Python ordbok med funktionen json.loads(). |
| json.loads('{“__complex__”: true, “real”: 4, “img”: 5}', object_hook = is_complex) | Avkodning av komplext JSON-objekt till Python |
| JSONDecoder().decode(färgsträng) | Användning av avkodning av JSON till Python med deserialisering |








