10
votes

Iterating via / analysant l'objet JSON via JavaScript

J'ai un problème avec JQuery / Ajax / Json. J'utilise une poche JQuery Ajax comme ...

$("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>")


2 commentaires

JSON peut-il avoir la même clé (ici "étudiant"), un objet plusieurs fois? Sinon, ce que vous obtenez n'est pas JSON.


Ah oui, Angela Goober ... Comment va la petite Angie de ces jours-ci? A-t-elle et Bobby Doofus se marie déjà?


4 Réponses :


4
votes

Le JSON que vous avez actuellement ne fonctionnera pas car le deuxième "étudiant" remplace efficacement le premier, car ce sont simplement des propriétés dans un objet.

Si vous pouvez contrôler la sortie JSON, changez-le à: xxx

alors vous avez une matrice que vous pouvez boucler: xxx


0 commentaires

32
votes

Votre objet JSON est incorrect car il a plusieurs propriétés avec le même nom. Vous devriez retourner une gamme d'objets "étudiant". XXX PRE>

Ensuite, vous pouvez en savoir plus comme suit: P>

 for (var i = 0, len = objJSON.length; i < len; ++i) {
     var student = objJSON[i];
     $("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>")...
 }


6 commentaires

Merci pour la réponse, ça marche! Cependant, juste une question ... Comment se fait-il que je ne puisse pas simplement faire un pour (étudiant à objjson) {}? Je l'ai essayé et ça ne fonctionnait pas ... bien peu importe, ça marche. Merci encore.


J'aurais pensé que cela fonctionnerait, mais je préfère itération des tableaux en utilisant l'index.


Stackoverflow.com/Questtions/2498107/... ...


Une question ici. Je crois que chaque objet à l'intérieur de la liste JSON est un dictionnaire. Si nous faisons un quelque_dictionary.attribute dans Python normal, nous obtenons un attributeError . Comment alors est-il valide ici? Est-ce un type différent de dictionnaire ou ne se comporte pas comme un dictionnaire du tout?


@SidharthSamant C'est JavaScript. En JavaScript, vous pouvez vous reporter aux propriétés d'un objet soit à l'aide de obj ['Property'] ou obj.property tant que le nom de la propriété est valide en ce qui concerne Directives de dénomination JavaScript. S'il contient des caractères illégaux pour un nom JavaScript, alors vous êtes limité à la première option.


@tvanfosson Oh à droite. Oublié. Désolé. Était frustré par des heures de googling pour mon problème de python et quand je suis tombé ici, je n'ai même pas vu si cette question était étiquetée avec Python. Ma faute.



4
votes

Il y a un problème avec ce JSON - les bretelles frisées extérieures doivent être des crochets carrés, comme vous le souhaitez une liste, pas une carte (objet AKA). Avec tous les objets de la carte ayant la même clé, il n'appréciera pas correctement - la dernière valeur écrasera la précédente sous la plupart des analyseurs.

Vous voulez: P>

$.getJSON("someurl.com", function(students) {
  $.each(students, function() { 
    $("<div id=\"" + student.id + "\">" + student.full_name + " (" + student.user_id + " - " + student.stin + ")</div>").appendTo($container);
  });
});


1 commentaires

Il y a une erreur dans votre première suggestion: vous avez toujours des noms de propriété ("étudiant") pour les entrées de votre tableau. Supprimera la bowvote lorsqu'il sera corrigé.



1
votes
var data = '[
  {
      "id": 456,
      "full_name": "GOOBER, ANGELA",
      "user_id": "2733245678",
      "stin": "2733212346"
  },
  {
      "id": 123,
      "full_name": "BOB, STEVE",
      "user_id": "abc213",
      "stin": "9040923411"
   }
]';

$.each(data, function(index, val) {
    alert(val.id);
    alert(val.full_name);
    alert(val.user_id);
    alert(val.stin);    
})

0 commentaires