JSON Python Parsing: A Simple Guide

JSON Python Parsing: A Simple Guide

Το JSON (σημαίνει 'JavaScript Object Notation') είναι μια μορφή βασισμένη σε κείμενο που διευκολύνει την ανταλλαγή δεδομένων μεταξύ διαφορετικών εφαρμογών. Για παράδειγμα, μια εφαρμογή γραμμένο σε C ++ η εκτέλεση σε Windows μπορεί εύκολα να ανταλλάξει δεδομένα JSON με μια εφαρμογή γραμμένη σε python και σε Linux. Η απλότητα και η ευελιξία του οδήγησαν σε ευρεία χρήση τα τελευταία χρόνια, ιδιαίτερα σε προτίμηση σε προηγούμενες μορφές που βασίζονται σε XML.





Υπάρχουν βιβλιοθήκες και εργαλεία διαθέσιμα για ανάλυση και δημιουργία JSON από σχεδόν οποιαδήποτε γλώσσα και περιβάλλον. Αυτό το άρθρο επικεντρώνεται σε μεθόδους και ζητήματα που προκύπτουν από την επεξεργασία του JSON χρησιμοποιώντας python.





Μερικά δείγματα JSON

Η πιο κοινή οντότητα JSON που θα συναντήσετε είναι μια αντικείμενο : ένα σύνολο αντιστοίχισης κλειδιού-τιμής με τη μορφή που φαίνεται παρακάτω.





Ο ήχος των Windows 10 σταματά ξαφνικά να λειτουργεί

person.json:

{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}

Δείτε πώς μπορείτε να αναπαραστήσετε μια σειρά αντικειμένων. Σε αυτήν την αναπαράσταση, κάθε στοιχείο του πίνακα είναι ένα αντικείμενο. Ακολουθεί ένα δείγμα μισθών παικτών μπέιζμπολ.



μισθός.json:

[ {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'barkele01',
'salary' : 870000
}, {
'year' : 1985,
'teamId' : 'ATL',
'leagueId' : 'NL',
'playerId' : 'bedrost01',
'salary' : 550000
} ]

Φυσικά, μπορείτε επίσης να αντιπροσωπεύσετε μια σειρά κλιμάκων. Μοιάζει με αυτό:





[
'hello',
'world',
35
]

Ανάλυση JSON στην Python

Η Python παρέχει το json μονάδα που μπορεί να χρησιμοποιηθεί τόσο για την ανάλυση του JSON, όσο και για τη δημιουργία JSON από αντικείμενα και λίστες python.

Το παρακάτω απόσπασμα κώδικα δείχνει πώς να ανοίξετε ένα αρχείο JSON και να φορτώσετε τα δεδομένα σε μια μεταβλητή.





import json
with open('sample.json', 'r') as fp:
obj = json.load(fp)

Όταν έχετε μια συμβολοσειρά που περιέχει τα δεδομένα JSON, μπορείτε να τη μετατρέψετε σε αντικείμενο (ή λίστα) python με τα ακόλουθα:

πώς να εγκαταστήσετε τα παράθυρα από τη μονάδα flash
obj = json.loads('''{
'firstName': 'Alice',
'lastName': 'Hall',
'age': 35
}''')

Για να αναλύσετε ένα URL JSON, μπορείτε να δημιουργήσετε ένα αντικείμενο URL χρησιμοποιώντας urllib2 και χρήση json.load () όπως και πριν.

import urllib2, json
url = urllib2.urlopen('http://site.com/sample.json')
obj = json.load(url)

Σφάλματα χειρισμού

Όταν το JSON έχει σφάλματα, θα λάβετε ένα ValueError Το Μπορείτε να το χειριστείτε και να λάβετε διορθωτικά μέτρα εάν απαιτείται.

try:
obj = json.loads('''{
'firstName': 'Alice',
'lastName: 'Hall',
'age': 35
}''')
except ValueError:
print('error loading JSON')

Ανάλυση JSON από τη γραμμή εντολών

Μερικές φορές, είναι χρήσιμο να αναλύσετε το JSON χρησιμοποιώντας τη γραμμή εντολών python, ίσως για να ελέγξετε για σφάλματα ή για να λάβετε μια όμορφη εσοχή εξόδου.

cat glossary.json
# prints
{'glossary': {'GlossDiv': {'GlossList': {'GlossEntry': {'GlossDef': {'GlossSeeAlso': ['GML', 'XML'], 'para': 'A meta-markup language, used to create markup languages such as DocBook.'}, 'GlossSee': 'markup', 'Acronym': 'SGML', 'GlossTerm': 'Standard Generalized Markup Language', 'Abbrev': 'ISO 8879:1986', 'SortAs': 'SGML', 'ID': 'SGML'}}, 'title': 'S'}, 'title': 'example glossary'}}

Για να λάβετε εσοχή εξόδου από το παραπάνω αρχείο JSON, μπορείτε να κάνετε τα εξής:

python -mjson.tool glossary.json
# prints
{
'glossary': {
'GlossDiv': {
'GlossList': {
'GlossEntry': {
'Abbrev': 'ISO 8879:1986',
'Acronym': 'SGML',
'GlossDef': {
'GlossSeeAlso': [
'GML',
'XML'
],
'para': 'A meta-markup language, used to create markup languages such as DocBook.'
},
'GlossSee': 'markup',
'GlossTerm': 'Standard Generalized Markup Language',
'ID': 'SGML',
'SortAs': 'SGML'
}
},
'title': 'S'
},
'title': 'example glossary'
}
}

Και εδώ είναι πώς μπορείτε να φορτώσετε το αντικείμενο JSON σε python και να εξαγάγετε μόνο ό, τι χρειάζεστε.

python -c 'import json; fp = open('glossary.json', 'r'); obj = json.load(fp); fp.close(); print(obj['glossary']['title']')
# prints
example glossary

Πρόσβαση στα Δεδομένα

Αφού φορτώσετε τα δεδομένα JSON σε μια μεταβλητή python, μπορείτε να έχετε πρόσβαση στα δεδομένα όπως θα κάνατε σε οποιαδήποτε εντολή python (ή λίστα ανάλογα με την περίπτωση). Για παράδειγμα, στα παραπάνω δεδομένα JSON μπορείτε να έχετε πρόσβαση ως εξής:

firstName = obj['firstName']
lastName = obj['Hall']
age = obj['age']

Τύποι δεδομένων

Οι τύποι δεδομένων καθορίζονται αυτόματα από τα δεδομένα. Σημειώστε ότι ηλικία αναλύεται ως ακέραιος αριθμός.

print(type(obj['firstName']), type(obj['lastName']), type(obj['age']))
# prints

Ο παρακάτω πίνακας μετατροπής χρησιμοποιείται για τη μετατροπή από JSON σε python.

Ανάλυση JSON με χρήση προσαρμοσμένης τάξης

Από προεπιλογή, ένα αντικείμενο JSON είναι αναλύθηκε σε έναν πύθωνα υπαγορεύω Το Μερικές φορές μπορεί να χρειαστεί να δημιουργήσετε αυτόματα ένα αντικείμενο της δικής σας τάξης από τα δεδομένα JSON. Μπορείτε να το κάνετε καθορίζοντας ένα object_hook συνάρτηση που χειρίζεται τη μετατροπή. Το παρακάτω παράδειγμα δείχνει πώς.

Εδώ είναι μια προσαρμοσμένη τάξη που αντιπροσωπεύει ένα Πρόσωπο Το

class Person:
def __init__(self, firstName, lastName, age):
self.firstName = firstName
self.lastName = lastName
self.age = age
def __str__(self):
return '{{'firstName' = '{0}','lastName' = '{1}', 'age' = {2}}}'.format(self.firstName, self.lastName, self.age)

Ένα παράδειγμα αυτής της κλάσης δημιουργείται περνώντας τα απαιτούμενα ορίσματα ως εξής:

person = Person('Crystal', 'Newell', 27)

Για να χρησιμοποιήσετε αυτήν την κλάση για να δημιουργήσετε στιγμιότυπα κατά την ανάλυση του JSON, χρειάζεστε ένα object_hook συνάρτηση που ορίζεται ως εξής: Η συνάρτηση λαμβάνει έναν πύθωνα υπαγορεύω και επιστρέφει ένα αντικείμενο της σωστής κλάσης.

def obj_creator(d):
return Person(d['firstName'], d['lastName'], d['age'])

Τώρα μπορείτε να το χρησιμοποιήσετε object_hook λειτουργία κατά την επίκληση του αναλυτή JSON.

with open('sample.json', 'r') as fp:
obj = json.load(fp, object_hook = obj_creator)
print(obj)
# prints
{'firstName' = 'Alice','lastName' = 'Hall', 'age' = 35}

Παραδείγματα χρήσης JSON

Το JSON είναι εξαιρετικά δημοφιλές στις μέρες μας. Πολλοί ιστότοποι και εφαρμογές SaaS (Software As A Service) προσφέρουν έξοδο JSON που μπορεί να καταναλωθεί απευθείας από εφαρμογές. Μερικά από τα διαθέσιμα στο κοινό περιλαμβάνουν:

  • StackOverflow/StackExchange. Εδώ είναι μια διεύθυνση URL που επιστρέφει μια λίστα ερωτήσεων σε μορφή JSON.
  • Το GitHub προσφέρει ένα JSON api στη διεύθυνση https://developer.github.com/v3/.
  • Και εδώ είναι το Flickr API: https://developer.yahoo.com/flickr/.

Αν ψάχνετε για περισσότερα παραδείγματα για το πώς να το χρησιμοποιήσετε σωστά, ανατρέξτε σε αυτόν τον οδηγό δημιουργία ενός bot κοινωνικής δικτύωσης χρησιμοποιώντας Python Το

κατεβάστε βίντεο από το youtube σε ρολό κάμερας

Χρησιμοποιείτε JSON για κατανάλωση ή παροχή υπηρεσιών; Και χρησιμοποιείτε python στην τεχνολογική σας στοίβα; Εξηγήστε στα παρακάτω σχόλια.

Μερίδιο Μερίδιο Τιτίβισμα ΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ Αξίζει την αναβάθμιση σε Windows 11;

Τα Windows έχουν επανασχεδιαστεί. Είναι όμως αυτό αρκετό για να σας πείσει να μεταβείτε από τα Windows 10 στα Windows 11;

Διαβάστε Επόμενο
Σχετικά θέματα
  • Προγραμματισμός
  • Προγραμματισμός
  • Πύθων
Σχετικά με τον Συγγραφέα Jay Sridhar(Δημοσιεύθηκαν 17 άρθρα) Περισσότερα από τον Jay Sridhar

Εγγραφείτε στο newsletter μας

Εγγραφείτε στο ενημερωτικό μας δελτίο για τεχνικές συμβουλές, κριτικές, δωρεάν ebooks και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για εγγραφή