JSON: τι είναι, δομή δεδομένων και αρχή λειτουργίας

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-08 Χρόνος ανάγνωσης: 8 λεπ

JSON (JavaScript Object Notation) — είναι μια ελαφριά μορφή κειμένου για ανταλλαγή δεδομένων, βασισμένη στη σύνταξη αντικειμένων JavaScript. Χρησιμοποιείται παντού: από REST API και αρχεία διαμόρφωσης έως αποθήκευση δεδομένων σε βάσεις δεδομένων και εφαρμογές για κινητά. Σύμφωνα με την επίσημη ιστοσελίδα JSON, η μορφή είναι ανεξάρτητη από γλώσσα προγραμματισμού και υποστηρίζεται από όλες σχεδόν τις σύγχρονες πλατφόρμες. JSON έχει γίνει το de facto πρότυπο για τη μετάδοση δεδομένων μεταξύ πελάτη και διακομιστή.

Κύρια σημεία

  • JSON — ελαφριά μορφή κειμένου για δομημένα δεδομένα βασισμένη στη σύνταξη JavaScript
  • Έξι τύποι δεδομένων — string, αριθμός, boolean, null, πίνακας και αντικείμενο για οποιεσδήποτε δομές
  • Καθολικότητα — υποστηρίζεται από όλες τις γλώσσες προγραμματισμού και πλατφόρμες
  • REST API — κύρια μορφή ανταλλαγής δεδομένων σε διαδικτυακές και κινητές εφαρμογές
  • Αναγνωσιμότητα — απλή σύνταξη διαβάζεται και επεξεργάζεται εύκολα χωρίς εργαλεία

Τι είναι το JSON;

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

Η ιστορία του JSON ξεκίνησε στις αρχές της δεκαετίας του 2000, όταν ο Douglas Crockford απομόνωσε ένα υποσύνολο της σύνταξης JavaScript για ανταλλαγή δεδομένων. Το 2013, η μορφή τυποποιήθηκε ως ECMA-404 και αργότερα ως ISO/IEC 21778:2017. Το όνομα σημαίνει JavaScript Object Notation.

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

Πού χρησιμοποιείται το JSON

  • REST API — κύρια μορφή αιτημάτων και αποκρίσεων μεταξύ διακομιστή και πελάτη
  • Αρχεία διαμόρφωσης — package.json, tsconfig.json, .prettierrc
  • Βάσεις δεδομένων — MongoDB, PostgreSQL (JSONB), Firebase Firestore
  • Εφαρμογές για κινητά — αποθήκευση ρυθμίσεων, προσωρινή αποθήκευση δεδομένων
  • Τεχνολογίες ιστού — WebSocket, Server-Sent Events, localStorage

Σύνταξη και τύποι δεδομένων JSON

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

Οι αριθμοί στο JSON μπορεί να είναι ακέραιοι ή κινητής υποδιαστολής, θετικοί ή αρνητικοί, με εκθετική σημείωση. Οι λογικές τιμές αναπαρίστανται με true και false, και η απουσία τιμής με null. Οι πίνακες περιέχουν μια διατεταγμένη συλλογή τιμών οποιουδήποτε τύπου, συμπεριλαμβανομένων ένθετων πινάκων και αντικειμένων.

json
{
  "name": "JSON",
  "type": "text",
  "version": 2024,
  "flexible": true,
  "extensions": null,
  "languages": [
    "JavaScript",
    "Python",
    "Java"
  ],
  "nested": {
    "info": "υποστήριξη ένθεσης"
  }
}
Τύπος Παράδειγμα Περιγραφή
String “κείμενο” Σε διπλά εισαγωγικά, με ακολουθίες διαφυγής
Αριθμός 42 Ακέραιος, κινητής υποδιαστολής, εκθετικός
Boolean true true ή false — χωρίς εισαγωγικά
null null Απουσία τιμής
Αντικείμενο {} Μη διατεταγμένη συλλογή ζευγών κλειδιού-τιμής
Πίνακας [] Διατεταγμένη λίστα τιμών

JSON σε REST API

JSON είναι η κύρια μορφή ανταλλαγής δεδομένων για REST API στην ανάπτυξη κινητών και ιστού. Ο διακομιστής στέλνει JSON στο σώμα της απόκρισης, ο πελάτης — στο σώμα του αιτήματος. Η τυπική κεφαλίδα Content-Type για JSON είναι application/json.

Τα σύγχρονα REST API χρησιμοποιούν JSON για τη μετάδοση όλων των τύπων δεδομένων: από απλές λίστες έως σύνθετες ένθετες δομές με σχέσεις μεταξύ οντοτήτων. Η βιβλιοθήκη πελάτη (π.χ. Axios σε JavaScript ή Retrofit σε Android) αυτόματα σειριοποιεί και αποσειριοποιεί το JSON, απαλλάσσοντας τον προγραμματιστή από τη χειροκίνητη ανάλυση.

Ένα σημαντικό πλεονέκτημα του JSON σε REST API είναι η δυνατότητα μερικής μετάδοσης δεδομένων (partial response) μέσω παραμέτρων αιτήματος, καθώς και η υποστήριξη ένθετων πόρων χωρίς πρόσθετα αιτήματα στον διακομιστή.

Ανάλυση JSON σε πλατφόρμες κινητών

Ανάλυση JSON σε πλατφόρμες κινητών πραγματοποιείται με ενσωματωμένα εργαλεία. Το Android χρησιμοποιεί τις βιβλιοθήκες Gson από την Google ή Moshi από την Square, το iOS — το πρωτόκολλο Codable με JSONDecoder. Κάθε πλατφόρμα παρέχει βολικά εργαλεία για μετατροπή JSON σε εγγενή αντικείμενα και αντίστροφα.

JSON σε Android (Kotlin)

Στο Android, η προσέγγιση με Gson ή Moshi είναι δημοφιλής. Αρκεί να ορίσετε μια data class με σχολιασμούς @SerializedName και να καλέσετε fromJson για αποσειριοποίηση. Η βιβλιοθήκη αντιστοιχίζει αυτόματα τα ονόματα πεδίων στο JSON με τα πεδία της κλάσης.

kotlin
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName

data class User(
    @SerializedName("id") val id: Int,
    @SerializedName("name") val name: String,
    @SerializedName("email") val email: String
)

fun parseJson(jsonString: String): User {
    val gson = Gson()
    return gson.fromJson(jsonString, User::class.java)
}

JSON σε iOS (Swift)

Στο iOS χρησιμοποιείται το ενσωματωμένο πρωτόκολλο Codable με JSONDecoder. Η δομή δεδομένων δηλώνεται ως struct με το πρωτόκολλο Codable, μετά την οποία το JSON αναλύεται με μία γραμμή. Το JSONEncoder εκτελεί την αντίστροφη σειριοποίηση — μετατρέπει το αντικείμενο σε JSON για αποστολή στον διακομιστή.

swift
import Foundation

struct User: Codable {
    let id: Int
    let name: String
    let email: String
}

func parseJSON(from data: Data) throws -> User {
    let decoder = JSONDecoder()
    return try decoder.decode(User.self, from: data)
}

JSON vs XML: σύγκριση μορφών

JSON και XML — δύο κύριες μορφές για τη μετάδοση δομημένων δεδομένων. Το JSON υπερέχει σε απλότητα και απόδοση, το XML σε αυστηρότητα και επικύρωση. Η επιλογή μεταξύ τους εξαρτάται από τις απαιτήσεις του έργου: για REST API επιλέγεται συχνότερα το JSON, για σύνθετα έγγραφα με σχήματα — το XML.

Το XML απαιτεί ετικέτες κλεισίματος για κάθε στοιχείο, γεγονός που αυξάνει το μέγεθος των δεδομένων 2-3 φορές σε σύγκριση με το JSON. Ταυτόχρονα, το XML υποστηρίζει χώρους ονομάτων, σχήματα XSD, χαρακτηριστικά και μετασχηματισμό XSLT, καθιστώντας το ισχυρότερο για εργασίες ροής εγγράφων και ενοποίησης εταιρικών συστημάτων.

Χαρακτηριστικό JSON XML
Σύνταξη Μινιμαλιστική, κλειδί-τιμή Με ετικέτες, ανοίγματος και κλεισίματος
Μέγεθος δεδομένων Συμπαγές 2-3 φορές μεγαλύτερο από JSON
Τύποι δεδομένων Έξι βασικοί τύποι Μόνο κείμενο, τύποι μέσω σχημάτων
Επικύρωση Χωρίς ενσωματωμένη, μέσω JSON Schema XSD — αυστηρή και ώριμη
Χώροι ονομάτων Όχι Πλήρης υποστήριξη namespace
Ταχύτητα ανάλυσης Υψηλή Χαμηλότερη λόγω πολυπλοκότητας

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

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

Σειριοποίηση αντικειμένου σε JSON

Σε JavaScript, το JSON.stringify μετατρέπει ένα αντικείμενο σε συμβολοσειρά JSON. Το δεύτερο όρισμα μπορεί να είναι ένας πίνακας κλειδιών για επιλεκτική σειριοποίηση ή μια συνάρτηση αντικατάστασης. Το τρίτο όρισμα ορίζει την εσοχή για μορφοποίηση.

typescript
interface Order {
  id: string;
  items: OrderItem[];
  total: number;
  createdAt: string;
}

const order: Order = {
  id: 'ord_001',
  items: [{ product: 'phone', quantity: 2 }],
  total: 1599.98,
  createdAt: '2026-07-03T10:00:00Z'
};

const jsonString = JSON.stringify(order, null, 2);

Ανάλυση ένθετου JSON

Σε Kotlin με τη βιβλιοθήκη Moshi, τα ένθετα αντικείμενα JSON υποβάλλονται σε επεξεργασία μέσω ένθετων data classes. Ο σχολιασμός @Json υποδεικνύει το όνομα πεδίου στο JSON εάν διαφέρει από το όνομα ιδιότητας της κλάσης. Οι πίνακες αναπαρίστανται ως List με τον τύπο στοιχείου.

kotlin
import com.squareup.moshi.Moshi
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory

data class ApiResponse(
    val status: String,
    val data: List<Product>,
    val pagination: Pagination
)

data class Product(
    val id: Int,
    val title: String,
    val price: Double
)

data class Pagination(
    val page: Int,
    val total: Int
)

val moshi = Moshi.Builder()
    .add(KotlinJsonAdapterFactory())
    .build()

JSON Schema: επικύρωση δομής

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

Το JSON Schema χρησιμοποιείται ευρέως στο OpenAPI (Swagger) για την τεκμηρίωση REST API, σε φόρμες επικύρωσης εισόδου και σε δοκιμές. Το αρχείο σχήματος είναι το ίδιο ένα έγγραφο JSON, επιτρέποντας τη χρήση τυπικών αναλυτών JSON για την ανάγνωσή του. Υπάρχουν online επικυρωτές και βιβλιοθήκες για όλες τις δημοφιλείς γλώσσες προγραμματισμού.

Στην ανάπτυξη κινητών, το JSON Schema χρησιμοποιείται για την επικύρωση αποκρίσεων διακομιστή στη φάση δοκιμών και για τον έλεγχο αρχείων διαμόρφωσης. Βιβλιοθήκες όπως network-validator σε Android και json-schema-validator επιτρέπουν την ενσωμάτωση επικύρωσης απευθείας στη διαδικασία ανάπτυξης, αποτρέποντας σφάλματα σε πρώιμα στάδια.

Συχνές ερωτήσεις

Ποιους τύπους δεδομένων υποστηρίζει το JSON;

JSON υποστηρίζει έξι τύπους: string (σε διπλά εισαγωγικά), αριθμό (ακέραιο και κινητής υποδιαστολής), boolean (true/false), null, αντικείμενο (ζεύγη κλειδιού-τιμής σε {}) και πίνακα (λίστα τιμών σε []). Αυτό είναι αρκετό για οποιεσδήποτε δομές δεδομένων σε εφαρμογές.

Μπορούν να χρησιμοποιηθούν σχόλια στο JSON;

Όχι, το πρότυπο JSON δεν υποστηρίζει σχόλια. Εάν χρειάζεστε σχόλια, χρησιμοποιήστε JSON5 (εκτεταμένο JSON) ή προσθέστε ένα πεδίο με περιγραφή, για παράδειγμα “_comment”: “επεξήγηση”. Ορισμένα εργαλεία, όπως το VS Code, υποστηρίζουν σχόλια σε αρχεία διαμόρφωσης JSON, αλλά αυτό είναι μια μη τυπική επέκταση.

Σε τι διαφέρει το JSON από το JSONB στο PostgreSQL;

JSONB — είναι μια δυαδική μορφή αποθήκευσης JSON στο PostgreSQL. Σε αντίθεση με το κειμενικό JSON, το JSONB υποβάλλεται σε επεξεργασία ταχύτερα, υποστηρίζει ευρετηρίαση (ευρετήρια GIN) και εγγυάται τη μοναδικότητα των κλειδιών. Ταυτόχρονα, το JSONB καταλαμβάνει περισσότερο χώρο στο δίσκο λόγω των προστιθέμενων μεταδεδομένων.

Πώς να ελέγξω την εγκυρότητα του JSON;

Χρησιμοποιήστε το JSONLint (jsonlint.com) για γρήγορο έλεγχο, το ενσωματωμένο JSON.parse() σε JavaScript με try-catch, ή πρόσθετα IDE. Η επικύρωση περιλαμβάνει έλεγχο ορθότητας εισαγωγικών, κλεισίματος παρενθέσεων και συμμόρφωσης τύπων. Για σύνθετα σχήματα, χρησιμοποιήστε το JSON Schema Validator.

Ποιο είναι το μέγιστο μέγεθος ενός αρχείου JSON;

Δεν υπάρχει περιορισμός στην προδιαγραφή JSON. Στην πράξη, το μέγεθος περιορίζεται από τη μνήμη της συσκευής και τις δυνατότητες του αναλυτή. Για εφαρμογές κινητών, συνιστάται να μην υπερβαίνετε το 1-2 MB ανά απόκριση και για μεγάλα δεδομένα να χρησιμοποιείτε σελιδοποίηση ή μετάδοση ροής.

Σύνοψη

  • JSON — μινιμαλιστική μορφή κειμένου με έξι τύπους δεδομένων για ανταλλαγή δομημένων πληροφοριών
  • Ανεξαρτησία γλώσσας — αναλυτές JSON υπάρχουν για όλες τις δημοφιλείς γλώσσες προγραμματισμού
  • REST API χρησιμοποιεί JSON ως τυπική μορφή αιτημάτων και αποκρίσεων σε εφαρμογές κινητών
  • Ανάλυση πραγματοποιείται με ενσωματωμένα εργαλεία: Gson/Moshi σε Android, Codable σε iOS
  • Το JSON είναι πιο συμπαγές από το XML 2-3 φορές, αλλά υστερεί έναντι του Protobuf σε απόδοση
  • Αναγνωσιμότητα — σύνταξη εύκολα αναγνώσιμη και διορθώσιμη χωρίς ειδικά εργαλεία
  • JSON Schema — πρόσθετο εργαλείο για επικύρωση δομής και τύπων δεδομένων

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης