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 det är: JSON är ett textformat för att utbyta data som nyckel-värde-par.
  • 📥 importera json: Pythons inbyggda json-modul hanterar alla JSON-operationer.
  • ➡️ Kodning: json.dumps() konverterar en Python objektet till en JSON-sträng.
  • ⬅️ Avkodning: json.loads() analyserar en JSON-sträng till en Python objekt.
  • 📂 Fil I/O: json.dump() och json.load() skriver och läser JSON-filer.
  • 🤖 AI-hjälp: AI-verktyg som Copilot genererar JSON-kod och avkodar kod direkt.

Python JSON-dumpar laddningar

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.

Python JSON-kodningsexempel

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'}

Python JSON-avkodningsexempel

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}}

Parsar in JSON-fil Python

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
}

Format JSON-kod Exempel

För att bättre förstå detta, ändra indrag till 40 och observera output-

Format JSON-kod Exempel

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

  1. Verklig del
  2. Fantasifull del

Komplex objektkodning av Python

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

JSON-biblioteket i Python

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

Kommandoradsgränssnitt med JSON

$ 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

Vanliga frågor

JSON (JavaScript Object Notation) är ett lätt textformat för att lagra och utbyta data som nyckel-värde-par. Pythons inbyggda json-modul kodar och avkodar den enkelt.

Använd json.dumps() för att konvertera en ordlista eller lista till en JSON-sträng, eller json.dump() för att skriva den direkt till en fil. Denna process kallas kodning.

Använd json.loads() för att analysera en JSON-sträng till en Python dictionary, eller json.load() för att läsa och avkoda JSON direkt från ett filobjekt.

Skicka argumentet indent till json.dumps(), till exempel json.dumps(data, indent=4). Detta formaterar JSON-filen med radbrytningar och indentering för enklare läsning.

Sätt sort_keys=True i json.dumps(), till exempel json.dumps(data, sort_keys=True). Detta ordnar nycklarna i stigande alfabetisk ordning i utdata.

AI-assistenter som GitHub Copilot autokompletterar json.dumps()- och loads()-anrop, genererar kodare för anpassade objekt och bygger kod för att hämta och analysera JSON från ett API.

Ja. AI-drivna verktyg kan automatisera generering av parsers, mappa JSON till Python klasser och lägg till felhantering för felaktigt formaterade data eller saknade nycklar i JSON-svar.

Använd förfrågningsbiblioteket för att hämta URLoch skicka sedan svarstexten till json.loads(). Alternativt kan du anropa svarsobjektets .json()-metod för att avkoda den direkt.

Sammanfatta detta inlägg med: