Δεδομένου ενός αλφαριθμητικού δεδομένων JSON, πώς μπορείτε να μετατρέψετε αυτό το αλφαριθμητικό με ασφάλεια σε ένα αντικείμενο JavaScript;
Προφανώς μπορείτε να το κάνετε αυτό με μη ασφαλή τρόπο με κάτι σαν...
var obj = eval("(" + json + ')');
...αλλά αυτό μας αφήνει ευάλωτους στο να περιέχει η συμβολοσειρά json άλλο κώδικα, τον οποίο φαίνεται πολύ επικίνδυνο να αξιολογήσουμε απλά.
Επεξεργασία: Αυτή η απάντηση είναι για τον IE < 7, για τα σύγχρονα προγράμματα περιήγησης ελέγξτε την απάντηση του Τζόναθαν παραπάνω.
Επεξεργασία: Αυτή η απάντηση είναι ξεπερασμένη και η Jonathan's απάντηση παραπάνω (JSON.parse(jsonString)
) είναι τώρα η καλύτερη απάντηση.
Το JSON.org έχει JSON parsers για πολλές γλώσσες, συμπεριλαμβανομένων 4 διαφορετικών για Javascript. Πιστεύω ότι οι περισσότεροι άνθρωποι θα θεωρούσαν την json2.js ως τη βέλτιστη εφαρμογή τους.
Δεν είμαι σίγουρος για άλλους τρόπους για να το κάνετε, αλλά εδώ είναι ο τρόπος που το κάνετε στο Prototype (JSON tutorial).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
Η κλήση της evalJSON() με όρισμα true καθαρίζει το εισερχόμενο αλφαριθμητικό.
Αν χρησιμοποιείτε jQuery, μπορείτε επίσης να κάνετε απλά $.getJSON(url, function(data) { });
Τότε μπορείτε να κάνετε πράγματα όπως data.key1.something
, data.key1.something_else
, κ.λπ.