Treoir maidir le parsáil JSON i Python

Tuairimí: 0

Seasann JSON do nodaireacht réad JavaScript. Ní hamháin go bhfuil sé éadrom ach tá sé éasca é a léamh agus a scríobh do dhaoine. Ar an gcaoi chéanna, bíonn sé éasca le meaisíní a pharsáil agus a ghiniúint. Tá JSON Parsing thar a bheith tábhachtach agus tú ag obair le sonraí ó APIs, comhaid chumraíochta, nó foinsí eile faisnéise stóráilte d'aon fhorbróir Python. Tógann an t -alt seo tú trí nósanna imeachta bunúsacha chun JSON a pharsáil ag baint úsáide as modúl JSON Python.

Tuiscint a fháil ar json agus a struchtúr

Léiríonn JSON sonraí mar phéirí príomhluacha, cosúil le foclóir Python. Seo sampla bunúsach de réad JSON:

{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"]
}

Cuimsíonn an réad JSON seo teaghrán, uimhir, boole, agus eagar. Tá tuiscint ar an struchtúr seo bunúsach chun sonraí JSON a pharsáil agus a ionramháil i Python.

Ag obair le JSON i Python

Mar gheall ar mhodúl JSON Python, tá sé simplí teaghráin agus comhaid JSON a pharsáil. Cuimsíonn an modúl seo modhanna ar nós JSON.LOADS () chun JSON a léamh ó shreangán, agus json.load () chun JSON a léamh ó chomhad. Os a choinne sin, úsáidtear json.dumps () agus json.dump () chun json a scríobh chuig teaghrán agus comhad, faoi seach.

Sonraí JSON a léamh

Tá roinnt bealaí ann chun sonraí JSON a léamh, a mbreathnóimid ar an gcéad cheann eile.

Ag léamh json ó shreangán

Chun sonraí JSON a léamh ó shreangán, bain úsáid as an modh json.loads ():

import json

json_string = '{"name": "Alice", "age": 30, "is_student": false, "courses": ["Math", "Science"]}'
data = json.loads(json_string)

print(data)

Aschur:

1.png

Ag léamh json ó chomhad

Chun sonraí JSON a léamh ó chomhad, bain úsáid as an modh json.load ():

import json

with open('data.json', 'r') as file:
    data = json.load(file)

print(data)

Aschur:

2.png

Sonraí JSON a scríobh

Seo roinnt bealaí éagsúla chun sonraí JSON a scríobh:

JSON a scríobh chuig teaghrán

Chun sonraí JSON a scríobh chuig teaghrán, bain úsáid as an modh json.dumps ():

import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

json_string = json.dumps(data)
print(json_string)

Aschur:

3.png

JSON a scríobh chuig comhad

Chun sonraí JSON a scríobh chuig comhad, bain úsáid as an modh json.dump ():

import json

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False,
    "courses": ["Math", "Science"]
}

with open('data.json', 'w') as file:
    json.dump(data, file)

Láimhseáil JSON NESTED

Tá rudaí JSON neadaithe coitianta agus tú ag obair le struchtúir sonraí níos casta. Is féidir le Python na struchtúir neadaithe seo a láimhseáil go héasca.

import json

nested_json_string = '''
{
    "name": "Alice",
    "age": 30,
    "is_student": false,
    "courses": ["Math", "Science"],
    "address": {
        "street": "123 Main St",
        "city": "Wonderland"
    }
}
'''

data = json.loads(nested_json_string)
print(data['address']['city'])

Aschur:

4.png

Ionchódóir saincheaptha JSON

Uaireanta, ní mór duit rudaí saincheaptha Python a thiontú ina JSON. Éilíonn sé seo ionchódóir saincheaptha.

import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

class StudentEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, Student):
            return obj.__dict__
        return super().default(obj)

student = Student("Alice", 30, False)
json_string = json.dumps(student, cls=StudentEncoder)
print(json_string)

Aschur:

5.png

Díchódóir saincheaptha json

Ar an gcaoi chéanna, chun sonraí JSON a dhíchódú i rudaí saincheaptha Python, tá díchódóir saincheaptha de dhíth ort.

import json

class Student:
    def __init__(self, name, age, is_student):
        self.name = name
        self.age = age
        self.is_student = is_student

def student_decoder(dct):
    return Student(dct['name'], dct['age'], dct['is_student'])

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
student = json.loads(json_string, object_hook=student_decoder)
print(student.name)

Aschur:

6.png

Saincheisteanna coitianta a láimhseáil

Is féidir le roinnt earráidí coitianta a bheith mar thoradh ar oibriú le sonraí JSON, go háirithe agus sonraí JSON á bparsú, a ghiniúint nó a rochtain. Seo cuid de na cinn is coitianta:

Formáid neamhbhailí json

Earráid choitianta nuair a bhíonn Parsing JSON ag dul i ngleic le formáid neamhbhailí JSON. Éilíonn JSON luachana dúbailte timpeall ar eochracha agus luachanna teaghrán, agus neadú ceart lúibíní agus braces.

import json

invalid_json_string = "{'name': 'Alice', 'age': 30, 'is_student': False}"
try:
    data = json.loads(invalid_json_string)
except json.JSONDecodeError as e:
    print(f"Invalid JSON format: {e}")

Aschur:

7.png

Eochracha ar iarraidh a láimhseáil

Agus tú ag parsáil sonraí JSON, d'fhéadfá teacht ar eochracha atá ar iarraidh. Bain úsáid as an modh GET chun luach réamhshocraithe a sholáthar má tá eochair ar iarraidh.

import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)import json

json_string = '{"name": "Alice", "age": 30}'
data = json.loads(json_string)

is_student = data.get('is_student', False)
print(is_student)

Debugging Json Parsing Saincheisteanna

Bain úsáid as an modúl PDB chun pointí briste a shocrú agus do chód parsála JSON a dhífhabhtú.

import json
import pdb

json_string = '{"name": "Alice", "age": 30, "is_student": false}'
pdb.set_trace()
data = json.loads(json_string)
print(data)

Sampla praiticiúil de láimhseáil JSON i scríobadh gréasáin

Is minic a bhíonn scríobadh gréasáin i gceist le sonraí a bhaint as APIs gréasáin a chuireann freagraí JSON ar ais. Seo sampla dlúth ag baint úsáide as an leabharlann iarratais agus an críochphointe https://httpbin.org/anything.

Ar dtús, cinntigh go bhfuil an leabharlann iarratais suiteáilte agat:

pip install requests

Iarrann an cód seo iarratais ar iarratais HTTP agus JSON chun sonraí JSON a láimhseáil. Seolann sé iarratas GET chuig an sprioc URL ag baint úsáide as iarratais.get (URL) agus cuireann sé an freagra JSON in iúl le freagra.json (), agus é á chasadh ina fhoclóir Python. Déanaimid sonraí áirithe a tharraingt amach agus a phriontáil mar cheanntásca, gníomhaire úsáideora, bunús, agus URL.

Tá láimhseáil láidir earráidí sa chód; Gabhfaidh sé JSON.JSondeCodeerRor nuair a tharlaíonn earráid díchódú JSON, agus nuair a bhíonn eochair shonrach as láthair, dá bhrí sin, rud a fhágann go bhfuil an clár á chosaint ó thimpistí ‘gan aon sonraí’. Dá bhrí sin, cuireann stóinseacht an chóid sin ar a chumas tascanna scríobtha gréasáin a láimhseáil go foirfe.

import requests
import json

url = 'https://httpbin.org/anything'

response = requests.get(url)

try:
    data = response.json()

    # Sonraí sonracha a bhaint as freagra JSON
    headers = data['headers']
    user_agent = headers.get('User-Agent', 'N/A')
    origin = data.get('origin', 'N/A')
    url = data.get('url', 'N/A')

    print(f"User Agent: {user_agent}")
    print(f"Origin: {origin}")
    print(f"URL: {url}")

except json.JSONDecodeError:
    print("Error decoding JSON response")

except KeyError as e:
    print(f"Key error: {e} not found in the JSON response")

8.png

Ní mór go mbeadh a fhios ag gach códóir Python conas JSON a pharsáil. Leis an modúl JSON agus an bealach is fearr chun é a dhéanamh aibhsithe ag an lámhleabhar seo, beidh tú in ann sonraí JSON a léamh, a scríobh agus a dhífhabhtú go tapa. Ciallaíonn sé sin go ndéanfaidh tú tástáil rialta ar do chóid, agus go mbainfidh tú úsáid as na huirlisí cearta agus as na gnéithe is mó atá ar fáil i Python le haghaidh scileanna láimhseála JSON níos fearr.

Agus scríobadh gréasáin á dhéanamh agat, faigheann duine amháin go bhfuil parsáil JSON tábhachtach, ag cur san áireamh go bhfuil sonraí a fhaightear ó APIs gréasáin de ghnáth i bhfoirm JSON seachas, is féidir leat faisnéis a bhaint as foinsí gréasáin éagsúla go héifeachtach, más féidir leat sonraí JSON a pharsáil agus a láimhseáil Ar bhealach maith.

Tuairimí:

0 tuairimí