Conas JSON a Pharsáil i Python - Céimeanna Éasca

Tuairimí: 0

Seasann JSON do JavaScript Object Notation. Ní hamháin go bhfuil sé éadrom ach freisin éasca do dhaoine é a léamh agus a scríobh. Ar an gcaoi chéanna, is furasta do mheaisíní é a pharsáil agus a ghiniúint. Tá parsáil ríthábhachtach agus ábhar á láimhseáil ó APIs, comhaid chumraíochta, nó foinsí eile faisnéise stóráilte d’aon fhorbróir Python. Siúlann an t-alt seo tú tríd na bunghnéithe a bhaineann le JSON a pharsáil ag úsáid mhodúl Python, lena n-áirítear conas json.dump i Python a úsáid chun ábhar a shábháil.

Ag Tuigsint JSON agus a struchtúr

Struchtúrann JSON sonraí i bpéirí eochair-luacha. Seo sampla bunúsach d’ábhar:


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

Tá na heilimintí coitianta sa sampla pharsála python seo: sreang, uimhir, boolean, agus eagar. Má bhíonn tú eolach ar an struchtúr seo, is iomaí níos éasca a bhíonn sé oibriú i Python.

Ag Idirghníomhú le JSON i Python

Is féidir leat sreang JSON a pharsáil go héasca ag baint úsáide as an modúl ionsuite i Python. Áirítear leis an modúl seo modhanna mar json.loads() chun léamh ó shreang, agus json.load() chun léamh ó chomhad. Os a choinne sin, úsáidtear json.dumps() agus json.dump i Python chun faisnéis a scríobh chuig sreang agus chuig comhad, faoi seach.

Sonraí JSON a léamh

Féachaimis ar conas sonraí JSON a léamh, rud a phléifimid anois.

JSON a léamh ó shreang

Más mian leat JSON a léamh i Python, bain úsáid as json.loads() chun sreang a pharsáil agus í a thiontú ina réad Python:


import json

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

print(data)

Aschur:

1.png

JSON a Bhaint Amach Ó Chomhad

Chun faisnéis a bhaint as comhad, úsáid an modh seo: json.load() agus oscail comhad json i Python:


import json

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

print(data)

Aschur:

2.png

Sonraí JSON a Scríobh

Sula scríobhann tú, is minic a bhíonn ort faisnéis atá ann cheana a léamh nó a luchtú — agus sin an áit a mbíonn an modh python load json file úsáideach. Nuair atá an fhaisnéis luchtaithe i gceart, is féidir leat í a ionramháil agus a scríobh ar ais i bhformáidí éagsúla.

JSON a Scríobh i Sreang

Chun faisnéis a scríobh i sreang, úsáid an modh json.dumps i Python:


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 i gComhad

Chun sonraí a scríobh isteach sa chomhad seo, úsáid an modh json.dump i Python:


import json

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

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

Ag Bainistiú JSON Neadaithe Casta

Bíonn rudaí neadaithe coitianta nuair a bhíonn tú ag obair le struchtúir faisnéise níos casta, agus is féidir leo déileáil go héasca leis na struchtúir neadaithe seo.


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 JSON saincheaptha

Ní féidir leis an teanga gach réad saincheaptha a thiontú go huathoibríoch ina JSON. Sa chás sin, beidh ort ionchódóir saincheaptha a chruthú.


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 JSON saincheaptha

Chun díchódú isteach i rudaí saincheaptha, beidh ort díchódóir saincheaptha a chur i bhfeidhm a bhfuil a fhios aige conas déileáil leo.


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

Ag láimhseáil fadhbanna coitianta

Is féidir le sonraí struchtúrtha roinnt earráidí coitianta a chruthú, go háirithe nuair a bhíonn tú ag parsáil, ag giniúint, nó ag rochtain ar ábhar struchtúrtha. Cabhraíonn parsálaí iontaofa python json leis na ceisteanna seo a aithint agus a réiteach níos éifeachtaí. Seo cuid de na cinn is coitianta:

Formáid neamhbhailí JSON

Earráid choitianta agus comhad json á pharsáil ná formáid neamhbhailí a fháil. Éilíonn sé comharthaí dúbailte timpeall ar eochracha agus ar luachanna sreinge, agus neadaithe ceart lúibíní agus lúibíní cuartha.


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

Uaireanta, níl gach eochair a mbeifeá ag súil leis san ábhar. Ligeann an modh get() duit eochracha ar iarraidh a láimhseáil go sábháilte trí luach réamhshocraithe a thabhairt ar ais in ionad earráid a ardú.


import json

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

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

Fadhbanna parsála JSON a Dhífhabhtú

Úsáid an modúl pdb chun briseadhphointí a shocrú agus do chód parsála 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 scrapáil ghréasáin

Is gnách le scrapáil ghréasáin ábhar a fháil ó sheirbhísí a thugann an fhaisnéis ar ais. Thíos tá sampla a úsáideann an leabharlann requests in éineacht leis an deireadhphointe https://httpbin.org/anything.

Sula dtosaímid, seiceáil go bhfuil an pacáiste requests suiteáilte agat:


pip install requests

Agus ábhar struchtúrtha á láimhseáil agat, is féidir leat an leabharlann requests a úsáid chun rudaí a dhéanamh níos éasca. Ní gá ach iarraidh GET agus an URL a eisiúint trí requests.get(url). Ansin, is féidir leat an freagra a pharsáil le response.json(). As sin amach, is simplí píosaí sonracha faisnéise mar cheanntásca, an gníomhaire úsáideora, an bunús, nó an URL iarratais a rochtain agus iad a phriontáil de réir mar is gá.

Tá láimhseáil láidir earráidí sa chód; ghabhann sé json.JSONDecodeError nuair a tharlaíonn earráid dhíchódaithe, agus KeyError nuair atá eochair shonrach ar iarraidh, rud a dhéanann an clár níos slán ó thitimí ‘gan sonraí’. Mar sin, cuireann an daingne sin ar chumas an chóid tascanna fíor-scrapála 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

Caithfidh gach forbróir a bheith ar an eolas faoin gcaoi le comhad json a pharsáil i Python. Leis an modúl agus an bealach is fearr a aibhsítear sa lámhleabhar seo, beidh tú in ann léamh, scríobh, agus dífhabhtú go tapa go leor. Ciallaíonn sé seo do chód a thástáil go rialta agus na huirlisí cearta agus na gnéithe is déanaí a úsáid chun feidhmiú níos fearr. Díríonn an treoir seo ar shonraí json a pharsáil i Python chun cabhrú leat na tascanna seo a mháistir go héifeachtach.

Agus tú ag déanamh scrapála gréasáin, bíonn parsáil ríthábhachtach ós rud é go dtagann ábhar ó APIs gréasáin go minic sa bhformáid seo. Má bhíonn tú oilte ar phróiseáil agus ar láimhseáil na sonraí seo, is féidir leat faisnéis luachmhar a bhaint go héifeachtach ó fhoinsí éagsúla.

Conclúid

Is scil thábhachtach í parsáil d’aon fhorbróir atá ag obair le APIs gréasáin, comhaid chumraíochta, nó foinsí seachtracha. Déantar faisnéis a láimhseáil—cibé acu ó shreang, ó chomhad, aschur struchtúrtha a scríobh, nó ag déileáil le rudaí neadaithe agus saincheaptha— a shimpliú tríd an modúl ionsuite i Python. Is féidir le forbróirí na modhanna json.load(), json.loads(), json.dump(), json.dumps() i Python a úsáid agus foghlaim conas dul i ngleic le fadhbanna coitianta, ionchódóirí nó díchódóirí saincheaptha a chur i bhfeidhm, agus feidhmchláir shaincheaptha a chruthú chun idirghníomhaíochtaí faisnéise atá láidir agus iontaofa a bhaint amach. Ós rud é go bhfuil an fhormáid seo ina caighdeán gréasáin le haghaidh malartú faisnéise, tá na scileanna seo luachmhar i scrapáil, láimhseáil ábhair, agus comhtháthú ilseirbhísí trí APIs. Déanann cód simplí python chun comhad json a léamh parsáil comhad json i Python inrochtana d’aon tionscadal, agus ligeann json.dump i Python ábhar a shábháil ar ais go héifeachtach.

Tuairimí:

0 tuairimí