11
votes

Dictionnaire JSON PARSING JavaScript pour itérer les clés

J'ai les données ci-dessous des données JSON provenant du service Web qui n'est rien d'autre qu'un dictionnaire sérialisé dans Json, maintenant sur le côté du client, j'ai besoin d'analyser ce dos à itérer les clés de ce dictionnaire JSON à l'aide de JavaScript ou JQuery

{
   "AboutToExpire": {
      "Display": true,
      "Message": "Several of your subscriptions are about to expire. <a id=\"lnkShowExpiringSubs\" href=\"#\">View subscriptions<\/a>"
   },
   "Expired": {
      "Display": true,
      "Message": "Your McAfee WaveSecure - Tablet Edition subscription has expired and you’ve been without protection for 384 days. <a id=\"lnkNotificationRenewNow\" href=\"http://home.mcafee.com/root/campaign.aspx?cid=96035&pk=FAB37CF4-3680-4A87-A253-77E7D48BF6D7&affid=0\">Renew now<\/a>"
   }
}


2 commentaires

Voulez-vous s'il vous plaît le faire (JSON Data) Lisible en premier ??


Qu'avez-vous essayé? aussi, quelle est votre question ?


4 Réponses :


1
votes

Paysez-le à? Vous pouvez simplement y attérer comme l'objet que c'est.

Dites que vous avez défini votre objet JSON en tant que variable à travers une fermeture ou quelque chose, ou pour l'exemple de l'exemple, comme une variable est une variable. >

$each(myJSON, function(x){document.print(myJSON.AboutToExpire[x].Message);`});


2 commentaires

J'ai besoin de vérifier la clé et de faire une certaine manipulation par exemple si la clé est aboutittoexpire ou quelque chose d'autre que j'ai besoin d'appliquer une classe et pour d'autres clés autres classes sur la valeur qui est un message dans ce cas.


De plus, Myjson.abouttoExpire vient comme non défini



27
votes

Utilisez JSON2.JS

var obj = JSON.parse(data);
for(var key in obj){
    if (obj.hasOwnProperty(key)){
        var value=obj[key];
        // work with key and value
    }
}


4 commentaires

Bonne solution. Mais vous n'avez pas besoin d'inclure JSON2.JS à moins que vous ne regardiez de très vieux navigateurs. Tous les navigateurs actuels ont analysé () et stringify () pris en charge de manière nativement.


Ne devriez-vous pas échanger si (obj.hasownProperty (clé)) { et pour (var cle à obj) { pour des raisons de performance?


@Neolisk Nope. Voir soigneusement! Le code indique pour chaque clé de l'objet et si cette touche est la valeur de la propriété de la propriété de l'OBJ ...


@ Shiplu.mokadd.im: Oui, vous avez raison, désolé. Je viens du monde C #, où une telle syntaxe est bizarre de dire le moins. +1 :)



7
votes
var s = '{"AboutToExpire":{"Display":true,"Message":"Several of your subscriptions are about to expire. \u003ca id=\"lnkShowExpiringSubs\" href=\"#\"\u003eView subscriptions\u003c/a\u003e"},"Expired":{"Display":true,"Message":"Your McAfee WaveSecure - Tablet Edition subscription has expired and you’ve been without protection for 384 days. \u003ca id=\"lnkNotificationRenewNow\" href=\"http://home.mcafee.com/root/campaign.aspx?cid=96035&pk=FAB37CF4-3680-4A87-A253-77E7D48BF6D7&affid=0\"\u003eRenew now\u003c/a\u003e"}}';

var data = eval(s); // this will convert your json string to a javascript object

for (var key in data) {
    if (data.hasOwnProperty(key)) { // this will check if key is owned by data object and not by any of it's ancestors
        alert(key+': '+data[key]); // this will show each key with it's value
    }
}

2 commentaires

EVAL est jugé dangereux par un large public. @ SHIPLU.MOKADD.IM La réponse est l'option la plus sûre.


Downvote for Eval, veuillez noter que c'est une mauvaise idée sur les données externes.



0
votes
  • L'exemple de serveur Web de flacon ci-dessous utilise JSONIFY (DICT)
  • JavaScript peut itéré sur la dicte JSON retournée sans conversions supplémentaires
  • Il s'agit d'un exemple de travail à partir de 2020 (les options OP / Réponses d'origine sont de 2012)

    ' xxx

    '


0 commentaires