Η συντακτική δομή JSON αποτελεί έναν τρόπο αποθήκευσης και ανταλλαγής δεδομένων. Το JSON είναι ένα κείμενο που ακολουθεί τη σύνταξη των αντικειμένων της JavaScript.
Η Python παρέχει ένα ενσωματωμένο πακέτο με την ονομασία “json”, το οποίο μπορεί να χρησιμοποιηθεί για την επεξεργασία δεδομένων σε μορφή JSON.
Παράδειγμα
Εισάγετε το module json:
import json
Αν έχετε μια συμβολοσειρά JSON, μπορείτε να την αναλύσετε χρησιμοποιώντας τη μέθοδο json.loads().
Παράδειγμα
Μετατροπή από JSON σε Python:
import json # Μια συμβολοσειρά JSON json_string = '{"name": "John", "age": 30, "city": "New York"}' # Μετατροπή από JSON σε Python python_dict = json.loads(json_string) # Εκτύπωση του λεξικού Python print(python_dict)
Ο κώδικας αντιστοιχεί στις παρακάτω ενέργειες:
- Εισάγεται η βιβλιοθήκη
json
. - Δημιουργείται μια συμβολοσειρά JSON με τη μεταβλητή
json_string
, η οποία περιέχει τα δεδομένα ενός αντικειμένου σε μορφή JSON. - Χρησιμοποιώντας τη συνάρτηση
json.loads()
, η οποία ανήκει στη βιβλιοθήκηjson
, το JSON μετατρέπεται σε δομή δεδομένων της Python, συγκεκριμένα σε ένα λεξικό, και αποθηκεύεται στη μεταβλητήpython_dict
. - Εκτυπώνεται το περιεχόμενο του λεξικού
python_dict
, το οποίο περιέχει τα δεδομένα που αναπαριστούνταν από τη συμβολοσειρά JSON.
Ο κώδικας δηλαδή πραγματοποιεί τη μετατροπή ενός JSON σε ένα λεξικό της Python και εκτυπώνει το αποτέλεσμα.
Με τη χρήση της μεθόδου json.dumps()
, μπορείτε να μετατρέψετε ένα αντικείμενο της Python σε μια συμβολοσειρά JSON.
[adinserter block=”2″]
Παράδειγμα
Μετατροπή από Python σε JSON:
import json # Ένα λεξικό Python python_dict = {"name": "John", "age": 30, "city": "New York"} # Μετατροπή από Python σε JSON json_string = json.dumps(python_dict) print(json_string)
Ο κώδικας πραγματοποιεί τις παρακάτω ενέργειες:
- Εισάγει τη βιβλιοθήκη
json
. - Δημιουργεί ένα λεξικό στην Python με τη μεταβλητή
python_dict
, το οποίο περιέχει τρία ζεύγη “κλειδί-τιμή”. - Χρησιμοποιεί τη συνάρτηση
dumps()
της βιβλιοθήκηςjson
για να μετατρέψει το λεξικόpython_dict
σε μια συμβολοσειρά JSON και την αποθηκεύει στη μεταβλητήjson_string
. - Εκτυπώνει την τιμή της μεταβλητής
json_string
, η οποία περιέχει τη συμβολοσειρά JSON που αντιπροσωπεύει το λεξικό.
Συνολικά, ο κώδικας μετατρέπει ένα λεξικό στην Python σε μια συμβολοσειρά JSON και την εκτυπώνει.
Μπορείτε να μετατρέψετε αντικείμενα Python των παρακάτω τύπων, σε συμβολοσειρές JSON:
- dict
- list
- tuple
- string
- int
- float
- True
- False
- None
Παράδειγμα
Μετατροπή αντικειμένων Python σε συμβολοσειρές JSON και εκτύπωση των τιμών:
import json # Python objects dict_obj = {"name": "John", "age": 30, "city": "New York"} # Ένα λεξικό list_obj = ["apple", "banana", "cherry"] # Μια λίστα tuple_obj = ("apple", "banana", "cherry") # Μια πλειάδα str_obj = "hello" # Ένα αλφαριθμητικό int_obj = 42 # Ένας ακέραιος αριθμός float_obj = 3.14 # Ένας δεκαδικός αριθμός bool_obj = True # Μια λογική τιμή (True/False) none_obj = None # Η τιμή None # Convert Python objects to JSON strings json_dict = json.dumps(dict_obj) # Μετατροπή του λεξικού σε JSON string json_list = json.dumps(list_obj) # Μετατροπή της λίστας σε JSON string json_tuple = json.dumps(tuple_obj) # Μετατροπή της πλειάδας σε JSON string json_str = json.dumps(str_obj) # Μετατροπή του αλφαριθμητικού σε JSON string json_int = json.dumps(int_obj) # Μετατροπή του ακεραίου σε JSON string json_float = json.dumps(float_obj) # Μετατροπή του δεκαδικού αριθμού σε JSON string json_bool = json.dumps(bool_obj) # Μετατροπή της λογικής τιμής σε JSON string json_none = json.dumps(none_obj) # Μετατροπή της τιμής None σε JSON string # Print JSON strings print("Dictionary:", json_dict) # Εκτύπωση του JSON string για το λεξικό print("List:", json_list) # Εκτύπωση του JSON string για τη λίστα print("Tuple:", json_tuple) # Εκτύπωση του JSON string για την πλειάδα print("String:", json_str) # Εκτύπωση του JSON string για το αλφαριθμητικό print("Integer:", json_int) # Εκτύπωση του JSON string για τον ακέραιο αριθμό print("Float:", json_float) # Εκτύπωση του JSON string για τον δεκαδικό αριθμό print("Boolean:", json_bool) # Εκτύπωση του JSON string για τη λογική τιμή print("None:", json_none) # Εκτύπωση του JSON string για την τιμή None
[adinserter block=”3″]
Ο παραπάνω κώδικας πραγματοποιεί τις παρακάτω ενέργειες:
- Εισάγει τη βιβλιοθήκη
json
για την επεξεργασία JSON. - Δημιουργεί διάφορα αντικείμενα Python όπως λεξικά, λίστες, πλειάδες, αλφαριθμητικά, ακέραιους αριθμούς, δεκαδικούς αριθμούς, λογικές τιμές και την τιμή
None
. - Χρησιμοποιεί την συνάρτηση
json.dumps()
για να μετατρέψει τα αντικείμενα Python σε JSON strings. - Εκτυπώνει τα JSON strings για κάθε αντικείμενο που δημιουργήθηκε.
Το αποτέλεσμα που προκύπτει από την εκτέλεση του παραπάνω κώδικα είναι:
Dictionary: {"name": "John", "age": 30, "city": "New York"} List: ["apple", "banana", "cherry"] Tuple: ["apple", "banana", "cherry"] String: "hello" Integer: 42 Float: 3.14 Boolean: true None: null
Κάθε γραμμή εκτύπωσης εμφανίζει το αντίστοιχο JSON string για το αντίστοιχο αντικείμενο. Τα JSON strings ακολουθούν τη σύνταξη του JSON με διάφορους τύπους δεδομένων, όπως αντικείμενα, λίστες, αλφαριθμητικά, αριθμούς και τιμές null
.
Όταν μετατρέπετε από Python σε JSON, τα αντικείμενα Python μετατρέπονται στο ισοδύναμο του JSON (JavaScript):
Python | JSON |
---|---|
dict | Object |
list | Array |
tuple | Array |
str | String |
int | Number |
float | Number |
True | true |
False | false |
None | null |
Παράδειγμα
Μετατρέψτε ένα αντικείμενο Python που περιλαμβάνει όλους τους διαθέσιμους τύπους δεδομένων:
import json # Ένα αντικείμενο Python που περιέχει όλους τους αποδεκτούς τύπους δεδομένων python_obj = { "name": "John", "age": 30, "married": True, "divorced": False, "children": ("Ann", "Billy"), "pets": None, "cars": [ {"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1} ] } # Μετατροπή του αντικειμένου Python σε JSON json_string = json.dumps(python_obj) print(json_string)
Ο παραπάνω κώδικας πραγματοποιεί τις εξής ενέργειες:
- Εισάγει τη βιβλιοθήκη
json
, η οποία παρέχει λειτουργίες για τη μετατροπή αντικειμένων Python σε μορφή JSON και αντίστροφα. - Δημιουργεί ένα αντικείμενο Python με τη μεταβλητή
python_obj
, το οποίο περιέχει διάφορους τύπους δεδομένων, όπως συμβολοσειρές, αριθμούς, λογικές τιμές, πλειάδες, λίστες και λεξικά. - Χρησιμοποιεί τη συνάρτηση
json.dumps()
για να μετατρέψει το αντικείμενο Python σε μια μορφή JSON. Το αποτέλεσμα αποθηκεύεται στη μεταβλητήjson_string
. - Εκτυπώνει την τιμή της μεταβλητής
json_string
, η οποία περιέχει το JSON string που προέκυψε από τη μετατροπή του αντικειμένου Python.
Το αποτέλεσμα που εμφανίζεται στην οθόνη είναι το εξής:
{"name": "John", "age": 30, "married": true, "divorced": false, "children": ["Ann", "Billy"], "pets": null, "cars": [{"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1}]}
Πρόκειται για το JSON string που αντιστοιχεί στο αρχικό αντικείμενο Python. Τα δεδομένα έχουν μετατραπεί σε μορφή JSON, με τη διατήρηση της ιεραρχίας και των τύπων δεδομένων.
Η μέθοδος json.dumps() δέχεται παραμέτρους που διευκολύνουν την ανάγνωση του αποτελέσματος.
import json # Δημιουργία ενός Python αντικειμένου python_obj = { "name": "John", "age": 30, "married": True, "divorced": False, "children": ("Ann", "Billy"), "pets": None, "cars": [ {"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1} ] } # Μετατροπή του Python αντικειμένου σε μια συμβολοσειρά JSON json_string = json.dumps(python_obj, indent=4, separators=(". ", " = "), sort_keys=True) # Εκτύπωση της συμβολοσειράς JSON print(json_string)
[adinserter block=”4″]
Ο παραπάνω κώδικας περιλαμβάνει τις παρακάτω ενέργειες:
- Εισαγωγή της βιβλιοθήκης
json
. - Δημιουργία ενός Python αντικειμένου με διάφορους τύπους δεδομένων, όπως συμβολοσειρές, αριθμούς, λογικές τιμές, πλειάδες, λίστες και λεξικά.
- Χρήση της συνάρτησης
json.dumps()
για να μετατραπεί το Python αντικείμενο σε μια συμβολοσειρά JSON.
- Η παράμετρος
indent=4
καθορίζει τον αριθμό των κενών διαστημάτων που χρησιμοποιούνται για τον εσοχισμό των δομών JSON. - Η παράμετρος
separators=(". ", " = ")
καθορίζει τους χαρακτήρες που χρησιμοποιούνται για τον διαχωρισμό των κλειδιών και των τιμών στις δομές JSON. - Η παράμετρος
sort_keys=True
καθορίζει αν τα κλειδιά του λεξικού θα ταξινομηθούν σε αύξουσα σειρά κατά τη μετατροπή σε JSON.
Εκτύπωση της συμβολοσειράς JSON.
Το αποτέλεσμα της εκτέλεσης του κώδικα θα είναι η εκτύπωση της συμβολοσειράς JSON που αντιστοιχεί στο αρχικό Python αντικείμενο. Η συμβολοσειρά θα περιέχει τα διάφορα στοιχ
εία του αντικειμένου ταξινομημένα και με την κατάλληλη μορφοποίηση που ορίστηκε από τις παραμέτρους της json.dumps()
.
Το αποτέλεσμα θα είναι η εκτύπωση της παρακάτω συμβολοσειράς JSON:
{ "age" = 30, "cars" = [ { "model" = "BMW 230", "mpg" = 27.5 }, { "model" = "Ford Edge", "mpg" = 24.1 } ], "children" = [ "Ann", "Billy" ], "divorced" = false, "married" = true, "name" = "John", "pets" = null }
Αυτή η συμβολοσειρά περιέχει τα στοιχεία του αρχικού Python αντικειμένου με την κατάλληλη μορφοποίηση για την αναπαράστασή του σε μορφή JSON. Τα κλειδιά των λεξικών είναι ταξινομημένα και οι τιμές έχουν αντιστοιχιστεί σε κατάλληλους τύπους δεδομένων στη συμβολοσειρά JSON.
Παράδειγμα
Μπορείτε να χρησιμοποιήσετε την παράμετρο separators
για να προσαρμόσετε τους διαχωριστές που χρησιμοποιούνται στη μετατροπή ενός Python αντικειμένου σε μια συμβολοσειρά JSON. Αυτή η παράμετρος σας επιτρέπει να ορίσετε διαφορετικούς διαχωριστές για τα κλειδιά και τις τιμές του λεξικού.
import json python_obj = { "name": "John", "age": 30, "married": True, "divorced": False, "children": ("Ann", "Billy"), "pets": None, "cars": [ {"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1} ] } # Μετατροπή του Python αντικειμένου σε JSON string json_string = json.dumps(python_obj, indent=4, separators=("; ", " = ")) # Εκτύπωση του JSON string print(json_string)
Το πρόγραμμα παραπάνω κάνει τα εξής:
- Εισάγει τη βιβλιοθήκη
json
. - Ορίζει ένα Python λεξικό με όνομα
python_obj
που περιέχει πληροφορίες για ένα προσωπικό στοιχείο, όπως το όνομα, η ηλικία, η οικογενειακή κατάσταση, τα παιδιά και τα αυτοκίνητα. - Χρησιμοποιεί τη συνάρτηση
json.dumps()
για να μετατρέψει το Python λεξικό σε μια μορφή JSON string. - Ορίζει τη μορφή του JSON string με χρήση των παραμέτρων
indent=4
καιseparators=("; ", " = ")
, προκειμένου να προσδιοριστούν οι αναστολείς γραμμής και οι διαχωριστικοί χαρακτήρες. - Εκτυπώνει το JSON string.
Το αποτέλεσμα που εμφανίζεται στην οθόνη είναι η μετατροπή του python_obj
σε ένα JSON string, με διαχωριστικούς χαρακτήρες “;” και “=”, και με κάθε επίπεδο εσοχής που αντιστοιχεί σε 4 κενά. Το ακριβές αποτέλεσμα θα εξαρτηθεί από την υλοποίηση της βιβλιοθήκης json
στο περιβάλλον Python που τρέχετε.
[adinserter block=”5″]
Το αποτέλεσμα εξαρτάται από την υλοποίηση της βιβλιοθήκης json
και την έκδοση της Python που χρησιμοποιείτε. Ωστόσο, το αναμενόμενο αποτέλεσμα είναι η εκτύπωση του JSON string στην οθόνη, με τη δομή και τη μορφοποίηση που ορίστηκε από τις παραμέτρους indent=4
και separators=("; ", " = ")
.
Ένα πιθανό αποτέλεσμα θα μπορούσε να είναι το εξής:
{ "name" = "John"; "age" = 30; "married" = true; "divorced" = false; "children" = [ "Ann"; "Billy" ]; "pets" = null; "cars" = [ { "model" = "BMW 230"; "mpg" = 27.5 }; { "model" = "Ford Edge"; "mpg" = 24.1 } ] }
Ωστόσο, το ακριβές αποτέλεσμα θα εξαρτηθεί από τη συγκεκριμένη υλοποίηση της βιβλιοθήκης json
στο περιβάλλον Python που χρησιμοποιείτε.
Η μέθοδος json.dumps()
παρέχει παραμέτρους που επιτρέπουν την ταξινόμηση των κλειδιών στο αποτέλεσμα.
Μπορείτε να χρησιμοποιήσετε την παράμετρο sort_keys
για να ελέγξετε εάν το αποτέλεσμα πρέπει να ταξινομηθεί ή όχι. Η παράμετρος sort_keys
αποδέχεται μια λογική τιμή (True
ή False
) και καθορίζει εάν τα κλειδιά του λεξικού πρέπει να ταξινομηθούν πριν από τη μετατροπή τους σε JSON string.
Έτσι, αν ορίσετε sort_keys=True
, τότε τα κλειδιά του λεξικού θα ταξινομηθούν σε αύξουσα σειρά πριν από τη μετατροπή τους σε JSON string. Αν ορίσετε sort_keys=False
, τα κλειδιά θα διατηρηθούν στην αρχική τους σειρά.
Παράδειγμα
import json python_obj = { "name": "John", "age": 30, "married": True, "divorced": False, "children": ("Ann", "Billy"), "pets": None, "cars": [ {"model": "BMW 230", "mpg": 27.5}, {"model": "Ford Edge", "mpg": 24.1} ] } # Μετατροπή του Python αντικειμένου σε JSON string json_string = json.dumps(python_obj, indent=4, sort_keys=True) # Εκτύπωση του JSON string print(json_string)
Ο κώδικας που δόθηκε πραγματοποιεί τη μετατροπή ενός αντικειμένου Python σε μορφή JSON και εκτυπώνει το JSON string στην οθόνη.
Πιο συγκεκριμένα, ο κώδικας ξεκινά με τη δημιουργία ενός Python dictionary με το όνομα python_obj
. Το dictionary περιέχει διάφορα κλειδιά και τιμές που αντιπροσωπεύουν πληροφορίες όπως το όνομα, η ηλικία, το αν είναι παντρεμένος, το αν έχει παιδιά, τα κατοικίδιά του και τα αυτοκίνητά του.
Στη συνέχεια, η συνάρτηση json.dumps()
χρησιμοποιείται για να μετατραπεί το python_obj
σε ένα JSON string. Οι παράμετροι indent=4
και sort_keys=True
χρησιμοποιούνται για να προσθέσουν κενά προθέματα στις γραμμές του JSON για καλύτερη αναγνωσιμότητα και για να ταξινομήσουν τα κλειδιά του JSON κατά αλφαβητική σειρά.
Τέλος, το JSON string εκτυπώνεται στην οθόνη μέσω της εντολής print(json_string)
.
Το αποτέλεσμα που θα εμφανιστεί στην οθόνη θα είναι το ακόλουθο:
{ "age": 30, "cars": [ { "model": "BMW 230", "mpg": 27.5 }, { "model": "Ford Edge", "mpg": 24.1 } ], "children": [ "Ann", "Billy" ], "divorced": false, "married": true, "name": "John", "pets": null }
Αυτό είναι
το JSON string που αντιστοιχεί στο αντικείμενο Python python_obj
, με τις κατάλληλες περιοχές στοιχείων και αλφαβητική ταξινόμηση των κλειδιών.