Σφάλματα parser κατά την ανάλυση JSON σε PHP
Χρησιμοποιώντας τη συνάρτηση json_last_error
μπορούμε να μάθουμε ακριβώς ποιο σφάλμα
προέκυψε κατά την ανάλυση του JSON.
Ας δούμε πώς γίνεται αυτό.
Ας υποθέσουμε ότι έχουμε
εσφαλμένο JSON:
<?php
$json = '["a", "b", "c",]';
?>
Ας προσπαθήσουμε να το αναλύσουμε:
<?php
$data = json_decode($json);
var_dump($data); // θα εμφανίσει null
?>
Εφόσον προέκυψε σφάλμα, η json_last_error
όταν καλείται θα επιστρέψει τον αριθμό αυτού του σφάλματος:
<?php
$error = json_last_error();
var_dump($error); // αριθμός σφάλματος
?>
Ο αριθμός που επιστρέφεται μπορεί να συγκριθεί με ειδικές σταθερές της PHP. Με βάση αυτό, μπορούμε να γράψουμε κώδικα που πιάνει διάφορους τύπους σφαλμάτων:
<?php
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo 'δεν υπάρχουν σφάλματα';
break;
case JSON_ERROR_DEPTH:
echo 'έχει επιτευχθεί το μέγιστο βάθος στοίβας';
break;
case JSON_ERROR_STATE_MISMATCH:
echo 'εσφαλμένα bits ή ασυμφωνία λειτουργιών';
break;
case JSON_ERROR_CTRL_CHAR:
echo 'εσφαλμένος χαρακτήρας ελέγχου';
break;
case JSON_ERROR_SYNTAX:
echo 'συντακτικό σφάλμα, εσφαλμένο JSON';
break;
case JSON_ERROR_UTF8:
echo 'εσφαλμένοι χαρακτήρες UTF-8, πιθανόν κωδικοποιημένο λανθασμένα';
break;
default:
echo 'άγνωστο σφάλμα';
break;
}
?>
Δίνεται μια συμβολοσειρά με κάποιο JSON. Αναλύστε το σε δομή δεδομένων PHP. Εμφανίστε το αποτέλεσμα της ανάλυσης ή τον λόγο του σφάλματος, εάν η ανάλυση του JSON απέτυχε.