Τι είναι το JSONPath;

Το JSONPath είναι μια γλώσσα ερωτημάτων για JSON, παρόμοια με το πώς λειτουργεί το XPath για XML. Σας επιτρέπει να περιηγηθείτε και να εξαγάγετε δεδομένα από μια δομή JSON χρησιμοποιώντας εκφράσεις διαδρομής. Μια έκφραση JSONPath ξεκινά με $, που αντιπροσωπεύει τη ρίζα του εγγράφου, και χρησιμοποιεί σημειογραφία με τελεία (.key) ή σημειογραφία με αγκύλες (['key']) για να διασχίσει αντικείμενα, και [index] για πρόσβαση σε στοιχεία πίνακα.

Το JSONPath περιγράφηκε αρχικά από τον Stefan Gössner το 2007 και έχει καταστεί ένα ευρέως χρησιμοποιούμενο πρότυπο σε API, πλαίσια δοκιμών και αγωγούς επεξεργασίας δεδομένων. Υποστηρίζεται σε πολλές γλώσσες και εργαλεία, συμπεριλαμβανομένων JavaScript, Python, Java και βάσεων δεδομένων όπως PostgreSQL και MySQL.

Περιγραφή εργαλείου

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

Παραδείγματα

Εισαγωγή JSON:

{
  "store": {
    "book": [
      { "title": "Moby Dick", "price": 8.99, "category": "fiction" },
      { "title": "War and Peace", "price": 12.5, "category": "fiction" },
      {
        "title": "A Brief History of Time",
        "price": 7.99,
        "category": "science"
      }
    ]
  }
}
Έκφραση Αποτέλεσμα
$.store.book[*].title Όλοι οι τίτλοι βιβλίων
$.store.book[0] Πρώτο αντικείμενο βιβλίου
$.store.book[?(@.price < 10)] Βιβλία φθηνότερα από $10
$.store.book[?(@.category == "fiction")] Μόνο βιβλία φαντασίας
$..price Όλες οι τιμές τιμών οπουδήποτε στο έγγραφο

Χαρακτηριστικά

  • Αξιολόγηση σε πραγματικό χρόνο — τα αποτελέσματα ενημερώνονται καθώς πληκτρολογείτε την έκφραση ή επεξεργάζεστε το JSON
  • Εμφανίζει τον αριθμό αντιστοιχιών σε ένα αποκλειστικό πεδίο
  • Κουμπί αντιγραφής στο πεδίο έκφρασης για γρήγορη επαναχρησιμοποίηση
  • Κουμπί επικόλλησης για γρήγορη εισαγωγή JSON ή εκφράσεων από το πρόχειρο
  • Αναφορά σφαλμάτων για μη έγκυρο JSON ή κακοσχηματισμένες εκφράσεις διαδρομής

Πώς λειτουργεί

Οι εκφράσεις JSONPath αξιολογούνται σε σχέση με το αναλυμένο JSON χρησιμοποιώντας τη βιβλιοθήκη jsonpath-plus. Το σύμβολο $ αναφέρεται στο στοιχείο ρίζας. Οι θυγατρικοί κόμβοι προσπελαύνονται με . ή [], τα σύμβολα μπαλαντέρ με *, η αναδρομική κάθοδος με .. και τα φίλτρα με [?(...)]. Το αποτέλεσμα είναι πάντα ένας πίνακας αντιστοιχιών, ακόμη και αν βρεθεί μόνο μία αντιστοιχία.

Επεξήγηση επιλογών

Σύνταξη Σημασία
$ Στοιχείο ρίζας
.key ή ['key'] Ιδιότητα θυγατρικού
[*] Όλα τα στοιχεία πίνακα
[0] Πρώτο στοιχείο πίνακα (με δείκτη μηδέν)
[-1] Τελευταίο στοιχείο πίνακα
[0,2] Στοιχεία στο ευρετήριο 0 και 2
[0:2] Στοιχεία από ευρετήριο 0 έως 1 (τμήμα)
..key Αναδρομική κάθοδος — εύρεση key σε οποιοδήποτε βάθος
[?(@.price > 5)] Φίλτρο — στοιχεία όπου price είναι μεγαλύτερο από 5
@ Τρέχων κόμβος (χρησιμοποιείται σε εκφράσεις φίλτρου)

Περιπτώσεις χρήσης

  • Ανάπτυξη API — επαληθεύστε ότι ένας επιλογέας JSONPath που χρησιμοποιείται σε έναν REST client, σουίτα δοκιμών ή εργαλείο χαρτογραφίας δεδομένων εξάγει τα αναμενόμενα πεδία από μια απάντηση API
  • Μετασχηματισμός δεδομένων — προσδιορίστε ποιες τιμές θα εξαγάγετε από ένα ένθετο JSON payload πριν γράψετε ένα σενάριο μετασχηματισμού
  • Εκμάθηση JSONPath — πειραματιστείτε διαδραστικά με τη σύνταξη διαδρομής για να κατανοήσετε πώς λειτουργούν τελεστές όπως .., [*] και [?()] σε πραγματικά δεδομένα

Συμβουλές

  • Χρησιμοποιήστε $..* για να λάβετε κάθε μία τιμή σε ολόκληρο το έγγραφο — χρήσιμο για εξερεύνηση άγνωστων δομών JSON.
  • Οι εκφράσεις φίλτρου υποστηρίζουν συγκρίσεις (==, !=, <, >, <=, >=) και μπορούν να αναφέρουν ένθετες ιδιότητες: [?(@.author.name == "Rees")].
  • Για να ταιριάξετε μια ιδιότητα ανεξάρτητα από το βάθος της, χρησιμοποιήστε .. αναδρομική κάθοδος: $..title βρίσκει όλα τα πεδία title οπουδήποτε στο έγγραφο.