
# JSONC

Τα αρχεία αποθήκευσης του storh είναι αντικείμενα JSON και οι αναγνώσεις δέχονται JSONC: σχόλια γραμμής, σχόλια μπλοκ και τελικά κόμματα. Έτσι, τα αρχεία εγγραφών μπορούν να ανοιχτούν και να σχολιαστούν με ασφάλεια σε έναν επεξεργαστή· εξακολουθεί να τα αναλύει το storh.

```jsonc
{
  // Application-owned fields live under data.
  "id": "018bcfe5-6800-7000-8000-000000000000",
  "data": {
    "title": "Home",
  },
}
```

Οι αναγνώσεις δοκιμάζουν πρώτα αυστηρή ανάλυση `json_decode` και χρησιμοποιούν τον αφαιρετή JSONC μόνο αν αποτύχει, ώστε τα κανονικά αρχεία να μην επιβαρύνονται με χειρισμό σχολίων.

## Τι γράφει το storh

Οι εγγραφές είναι κανονικές, συμπαγείς γραμμές JSON με αλλαγή γραμμής στο τέλος:

```text
{"id":"018bcfe5-6800-7000-8000-000000000000","data":{"title":"Home"}}
```

Τα σχόλια και η προσαρμοσμένη μορφοποίηση διατηρούνται μέχρι το storh να ξαναγράψει την εγγραφή. Μια `put()` στο ίδιο αναγνωριστικό αντικαθιστά ολόκληρο το αρχείο με κανονική έξοδο, επομένως αντιμετωπίζετε τα σχόλια ως πρόχειρες σημειώσεις και όχι ως μόνιμα μεταδεδομένα. Οι μόνιμες πληροφορίες ανήκουν στο `data`.

Η κωδικοποίηση διατηρεί τους χαρακτήρες Unicode και τις κάθετους χωρίς διαφυγή, και διατηρεί τα μηδενικά κλάσματα κινητής υποδιαστολής (`1.0` παραμένει `1.0`), ώστε η αποκωδικοποίηση και η επανακωδικοποίηση των ίδιων δεδομένων να δίνουν τα ίδια byte. Τα δηλωτικά ευρετηρίων και τα άλλα εσωτερικά αρχεία μεταδεδομένων είναι αντικείμενα JSON με την ίδια ανοχή κατά την ανάγνωση.

Το `Jsonc::decode_object()` απορρίπτει έγγραφα που δεν είναι αντικείμενα και κακοσχηματισμένη είσοδο.
Τα `Jsonc::encode_object()` και `Jsonc::encode_compact_object()` γράφουν πίνακες ως έγγραφα αντικειμένων.
