Python JSON: Encode(dumps), Decode(loads) & Les JSON File

⚡ Smart oppsummering

JSON er et lett tekstformat for utveksling av data, og Pythons innebygde json-modul leser og skriver den enkelt. Her lærer du å kode Python objekter med dumps() og dekode JSON med loads(), pluss fil-I/O og mer.

  • 📦 Hva det er: JSON er et tekstformat for utveksling av data som nøkkel-verdi-par.
  • 📥 importer json: PythonDen innebygde json-modulen håndterer alle JSON-operasjoner.
  • ➡️ Koding: json.dumps() konverterer en Python objektet inn i en JSON-streng.
  • ¬ i ... Dekoding: json.loads() analyserer en JSON-streng til en Python gjenstand.
  • 📂 Fil I/O: json.dump() og json.load() skriver og leser JSON-filer.
  • 🤖 AI-hjelp: AI-verktøy som Copilot genererer JSON-koding og dekoder kode umiddelbart.

Python JSON-dumper laster

Hva er JSON i Python?

JSON in Python er et standardformat inspirert av JavaSkript for datautveksling og dataoverføring som tekstformat over et nettverk. Vanligvis er JSON i streng- eller tekstformat. Den kan brukes av APIer og databaser, og den representerer objekter som navn/verdi-par. JSON står for JavaSkriptobjektnotasjon.

Python JSON-syntaks:

JSON er skrevet som nøkkel- og verdipar.

{
        "Key":  "Value",
        "Key":  "Value",
} 

JSON er veldig lik Python ordbok. Python støtter JSON, og den har et innebygd bibliotek som en JSON.

JSON-biblioteket i Python

'marshal'og'pickle' eksterne moduler av Python opprettholde en versjon av JSON Python bibliotek. Jobber med JSON i Python for å utføre JSON-relaterte operasjoner som koding og dekoding, må du først importere JSON-biblioteket og for det i din .py fil,

import json

Følgende metoder er tilgjengelige i JSON Python moduler

Metode Tekniske beskrivelser
dumper() koding til JSON-objekter
dump() kodet streng som skrives på fil
laster() Dekod JSON-strengen
laste() Dekod mens JSON-filen leses

Python til JSON (koding)

JSON Bibliotek av Python utfører følgende oversettelse av Python objekter inn i JSON-objekter som standard

Python JSON
diktere Objekt
liste Array
unicode String
tall – int, lang nummer – int
flyte tall – ekte
ekte ekte
Falsk Falsk
none Null

konvertering Python data til JSON kalles en kodingsoperasjon. Koding gjøres ved hjelp av JSON-bibliotekmetoden - dumper()

JSON dumper() inn Python

json.dumps() in Python er en metode som konverterer ordbokobjekter av Python til JSON-strengdataformat. Det er nyttig når objektene må være i strengformat for operasjoner som parsing, utskrift osv.

La oss nå utføre vårt første json.dumps-kodingseksempel 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)

Utgang:

{"person": {"name": "Kenn", "sex": "male", "age": 28}})

La oss se et eksempel på Python skriv JSON til fil for å lage en JSON-fil av ordboken med samme funksjon dump()

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

Utgang:

Ingenting å vise...I systemet ditt er json_file.json opprettet. Du kan sjekke den filen som vist i skriv JSON til fil nedenfor Python eksempel.

Python Eksempel på JSON-koding

JSON til Python (Dekoding)

JSON-strengdekoding gjøres ved hjelp av den innebygde metoden json.loads() & json.load() av JSON-biblioteket i Python. Her viser oversettelsestabellen eksempel på JSON-objekter til Python gjenstander som er nyttige å utføre dekoding i Python av JSON-strengen.

JSON Python
Objekt diktere
Array liste
String unicode
nummer – int tall – int, lang
tall – ekte flyte
ekte ekte
Falsk Falsk
Null none

La oss se en grunnleggende parse JSON Python eksempel på avkoding ved hjelp av json.loads funksjon,

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

Utgang:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}
Type of dict_obj <class 'dict'>
Person...... {'name': 'John', 'sex': 'male'}

Python JSON Decode Eksempel

Dekoder JSON-fil eller analyserer JSON-fil inn Python

Nå skal vi lære hvordan du leser JSON-filen Python med Python parse JSON eksempel:

NOTAT: Dekoding av JSON-fil er filinngang/utgang (I/O) relatert operasjon. JSON-filen må eksistere på systemet ditt på det spesifiserte stedet du nevner i programmet.

Python les JSON-fil Eksempel:

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)

Her data er et ordbokobjekt av Python som vist i den ovenfor lese JSON-filen Python eksempel.

Utgang:

{'person': {'name': 'Kenn', 'sex': 'male', 'age': 28}}

Parser JSON-fil inn Python

Kompakt koding inn Python

Når du trenger å redusere størrelsen på JSON-filen din, kan du bruke kompakt koding inn Python.

Eksempel,

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)

Utgang:

'["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 **

Formater JSON-kode (pen utskrift)

  • Målet er å skrive godt formatert kode for menneskelig forståelse. Ved hjelp av pen utskrift kan alle enkelt forstå koden.

Eksempel:

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)

Utgang:

{
   "a" : 4,
   "b" : 5
}

Format JSON-kode Eksempel

For bedre å forstå dette, endre innrykk til 40 og observer utdata-

Format JSON-kode Eksempel

Bestilling av JSON-koden:

sorteringsnøkler attributt i Python dumps-funksjonens argument vil sortere nøkkelen i JSON i stigende rekkefølge. Sort_keys-argumentet er et boolsk attributt. Når det er sant er sortering tillatt ellers ikke. La oss forstå med Python streng til JSON sorteringseksempel.

Eksempel,

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)

Utgang:

{
    "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 kanskje ser, er nøklenes alder, biler, barn osv. ordnet i stigende rekkefølge.

Kompleks objektkoding av Python

Et komplekst objekt har to forskjellige deler, dvs

  1. Virkelig del
  2. Fantasifull del

Kompleks objektkoding av Python

Eksempel: 3 +2i

Før du utfører koding av et komplekst objekt, må du sjekke at en variabel er kompleks eller ikke. Du må lage en funksjon som kontrollerer verdien som er lagret i en variabel ved å bruke en instansmetode.

La oss lage den spesifikke funksjonen for sjekk objektet er komplekst eller kvalifisert for koding.

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)

Utgang:

'[4.0, 5.0]'

Kompleks JSON-objekt dekoding inn Python

For å dekode komplekst objekt i JSON, bruk en object_hook-parameter som sjekker at JSON-strengen inneholder det komplekse objektet eller ikke. La oss forstå med streng til JSON Python Eksempel,

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)

Utgang:

Complex_object...... (4+5j)
Without_complex_object...... {'real': 6, 'img': 7}

Oversikt over JSON Serialization class JSONEncoder

JSONEncoder-klassen brukes for serialisering av evt Python objekt mens du utfører koding. Den inneholder tre forskjellige metoder for koding som er

  • standard(o) – Implementert i underklassen og returner serialize-objektet for o gjenstand.
  • kode(o) – Samme som JSON-dumper Python metode returnerer JSON-streng av Python data struktur.
  • iterencode(o) – Representer streng én etter én og kod objekt o.

Ved hjelp av encode()-metoden til JSONEncoder-klassen kan vi også kode alle Python objekt som vist nedenfor Python Eksempel på JSON-koder.

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

Utgang:

'{"colour": ["red", "yellow", "green"]}'

Oversikt over JSON-deserialiseringsklassen JSONDecoder

JSONDecoder-klassen brukes for deserialisering av evt Python objekt mens du utfører dekoding. Den inneholder tre forskjellige metoder for dekoding som er

  • standard(o) – Implementert i underklassen og returnerer deserialisert objekt o gjenstand.
  • dekode(o) – Samme som json.loads()-metoden returnerer Python datastrukturen til JSON-strengen eller data.
  • rå_dekode(o) – Representere Python ordbok en etter en og dekode objekt o.

Ved hjelp av decode() metoden til JSONDecoder-klassen, kan vi også dekode JSON-strengen som vist nedenfor Python Eksempel på JSON-dekoder.

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)

Utgang:

{'colour': ['red', 'yellow']}

Dekoding av JSON-data fra URLEksempel fra det virkelige liv

Vi henter data fra CityBike NYC (sykkeldelingssystem) fra spesifiserte steder URL(https://gbfs.citibikenyc.com/gbfs/2.3/gbfs.json) og konverter til ordbokformat.

Python last inn JSON fra fil Eksempel:

MERK:- Sørg for at forespørselsbiblioteket allerede er installert i din Python, Hvis ikke, åpne Terminal eller CMD og skriv

  • (Til Python 3 eller høyere) pip3 installasjonsforespørsler
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]) 

Utgang:

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

Unntak relatert til JSON Library i Python:

  • Klasse json.JSONDecoderError håndterer unntaket knyttet til dekodingsoperasjon. og det er en underklasse av ValueError.
  • Unntak – json.JSONDecoderError(msg, doc)
  • Parametre for unntak er,
    • msg – Uformatert feilmelding
    • doc – JSON-dokumenter analysert
    • pos – start indeksen til dokumentet når det mislyktes
    • lineno – line no show tilsvarer pos
    • kolon – kolonnenr tilsvarer pos

Python last inn JSON fra fil Eksempel:

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 og NaN Numbers in Python

JSON Data Interchange Format (RFC – Request For Comments) tillater ikke Infinite eller Nan Value, men det er ingen begrensning i Python- JSON Library for å utføre Infinite og Nan Value relatert operasjon. Hvis JSON får INFINITE og Nan datatype, blir den konvertert til bokstavelig.

Eksempel,

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

Utgang:

Infinity
<class 'str'>
NaN
inf
<class 'float'>	

Gjentatt nøkkel i JSON-streng

RFC angir at nøkkelnavnet skal være unikt i et JSON-objekt, men det er ikke obligatorisk. Python JSON-biblioteket tar ikke opp et unntak for gjentatte objekter i JSON. Den ignorerer alle gjentatte nøkkelverdi-par og tar kun hensyn til det siste nøkkelverdi-paret blant dem.

  • Eksempel,
import json
repeat_pair = '{"a":  1, "a":  2, "a":  3}'
json.loads(repeat_pair)

Utgang:

{'a': 3}

CLI (Command Line Interface) med JSON inn Python

json.tool gir kommandolinjegrensesnittet for å validere JSON pretty-print-syntaks. La oss se et eksempel på CLI

Kommandolinjegrensesnitt med JSON

$ echo '{"name" : "Kings Authur" }' | python3 -m json.tool

Utgang:

{
    "name": " Kings Authur "
}

Fordeler med JSON i Python

  • Enkelt å flytte tilbake mellom container og verdi (JSON til Python og Python til JSON)
  • Menneskelig lesbart (pretty-print) JSON-objekt
  • Mye brukt i datahåndtering.
  • Har ikke samme datastruktur i enkeltfilen.

Implementeringsbegrensninger for JSON i Python

  • I deserializer av JSON-område og prediksjon av et tall
  • Maksimal lengde på JSON-streng og arrays av JSON og neste nivåer av objekt.

Python JSON-jukseark

Python JSON-funksjon Tekniske beskrivelser
json.dumps(person_data) Opprett JSON-objekt
json.dump(person_data, file_write) Opprett JSON-fil ved å bruke File I/O av Python
compact_obj = json.dumps(data, separators=(',',':')) Kompakt JSON-objekt ved å fjerne mellomromstegn fra JSON-objekt ved hjelp av skilletegn
formatted_obj = json.dumps(dic, indent=4, separators=(',', ': ')) Formatering av JSON-kode ved hjelp av innrykk
sorted_string = json.dumps(x, indent=4, sort_keys=True) Sorterer JSON-objektnøkkelen i alfabetisk rekkefølge
complex_obj = json.dumps(4 + 5j, default=complex_encode) Python Kompleks objektkoding i JSON
JSONEncoder().encode(colour_dict) Bruk av JSONEncoder Class for serialisering
json.loads(data_string) Dekoder JSON-streng inn Python ordbok med funksjonen json.loads().
json.loads('{“__complex__”: true, “real”: 4, “img”: 5}', object_hook = is_complex) Dekoding av komplekst JSON-objekt til Python
JSONDecoder().decode(fargestreng) Bruk av dekoding JSON til Python med deserialisering

Spørsmål og svar

JSON (JavaScript Object Notation) er et lett tekstformat for lagring og utveksling av data som nøkkel-verdi-par. PythonDen innebygde json-modulen koder og dekoder den enkelt.

Bruk json.dumps() for å konvertere en ordbok eller liste til en JSON-streng, eller json.dump() for å skrive den direkte til en fil. Denne prosessen kalles koding.

Bruk json.loads() til å analysere en JSON-streng til en Python dictionary, eller json.load() for å lese og dekode JSON direkte fra et filobjekt.

Send indent-argumentet til json.dumps(), for eksempel json.dumps(data, indent=4). Dette formaterer JSON-filen med linjeskift og indentering for enklere lesning.

Sett sort_keys=True i json.dumps(), for eksempel json.dumps(data, sort_keys=True). Dette ordner nøklene i stigende alfabetisk rekkefølge i utdataene.

AI-assistenter som GitHub Copilot autofullfører json.dumps()- og loads()-kall, genererer kodere for tilpassede objekter og bygger kode for å hente og analysere JSON fra et API.

Ja. AI-drevne verktøy kan automatisere generering av parsere, tilordne JSON til Python klasser, og legg til feilhåndtering for feilformede data eller manglende nøkler i JSON-svar.

Bruk forespørselsbiblioteket til å hente URL, og send deretter svarteksten til json.loads(). Alternativt kan du kalle svarobjektets .json()-metode for å dekode den direkte.

Oppsummer dette innlegget med: