Περισσότερα
Πώς να ελέγξετε αν μια συμβολοσειρά είναι έγκυρη συμβολοσειρά JSON σε JavaScript χωρίς τη χρήση Try/Catch
Κάτι σαν:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Η λύση δεν πρέπει να περιέχει try/catch. Κάποιοι από εμάς ενεργοποιούν το "break on all errors" και δεν τους αρέσει να σπάει ο αποσφαλματωτής σε αυτές τις άκυρες συμβολοσειρές JSON.
489
3
Χρησιμοποιήστε έναν αναλυτή JSON όπως το
JSON.parse
:Στο prototypeJS, έχουμε τη μέθοδο isJSON. Μπορείτε να τη δοκιμάσετε. Ακόμα και η json μπορεί να βοηθήσει.
Μπορείτε να χρησιμοποιήσετε τη συνάρτηση javascript eval() για να ελέγξετε αν είναι έγκυρο.
π.χ.
Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση
JSON.parse
από το json.org:Ελπίζω αυτό να σας βοηθήσει.
ΠΡΟΕΙΔΟΠΟΙΗΣΗ:
eval()
είναι επικίνδυνο αν κάποιος προσθέσει κακόβουλο κώδικα JS, αφού θα τον εκτελέσει. Βεβαιωθείτε ότι το JSON String είναι αξιόπιστο, δηλαδή το πήρατε από μια αξιόπιστη πηγή.Επεξεργασία Για την 1η λύση μου, συνιστάται να το κάνετε αυτό.
Για να εγγυηθεί η json-ικότητα. Αν το
jsonString
δεν είναι καθαρό JSON, η eval θα πετάξει μια εξαίρεση.