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: