78 votes

Comment accéder au nom/valeur d'un objet JSON ?

function (data) {
    //add values based on activity type
    //data = JSON.parse(data);
    //alert(abc.Phone1);

    alert(data.myName)

    alert(data.toString());
    if (activityType == "Phone") {
    }
    return;

},

Comme vous pouvez le voir, cette fonction de rappel de $.ajax en prenant JSON données du contrôleur.

Par exemple :

[{"name":"myName" ,"address": "myAddress" }]

Dans ce cas, ma première alerte me donne undefined et la deuxième/troisième alerte popup s'affiche avec :

[{"name":"myName" ,"address": "myAddress" }]

Comment puis-je accéder à la valeur par le nom afin que ma première alerte soit remplie de myName qui est la valeur de name ?

115voto

thecodeparadox Points 41614

Au lieu d'analyser JSON, vous pouvez faire comme suit :

$.ajax({
  ..
  dataType: 'json' // using json, jquery will make parse for  you
});

Pour accéder à une propriété de votre JSON, faites ce qui suit :

data[0].name;

data[0].address;

Pourquoi vous avez besoin data[0] parce que les données sont un tableau, donc pour récupérer son contenu, il faut data[0] (premier élément), ce qui donne un objet {"name":"myName" ,"address": "myAddress" } .

Et pour accéder à la propriété d'un objet la règle est :

Object.property

ou parfois

Object["property"] // in some case

Donc vous avez besoin

data[0].name et ainsi de suite pour obtenir ce que vous voulez.


Si vous ne

set dataType: json alors vous devez les analyser en utilisant $.parseJSON() et pour récupérer les données comme ci-dessus.

0 votes

maps.googleapis.com/maps/api/geocode/ à partir de cette url, comment obtenir la valeur du champ "adresse_formatée" dans une variable ? success : function(data) { address = data['adresse_formatée'];} throws an error

0 votes

Y a-t-il une façon plus optimisée de le faire ? Si j'ai une liste json de plus de 20 noms et que j'ai besoin d'afficher leur valeur, mais que je ne sais pas lequel d'entre eux sera retourné dans le json, ce pourrait être un seul ou 3 ou 10 ou les 20, devrais-je répéter la même chose pour chacun d'entre eux, par exemple : if data[0].name : console.log(data[0].name); if data[0].adress : console.log(data[0].adress); ..

0 votes

Pourrait data[0].[0] travail, d'accéder name ? Je le vois comme un tableau.

31voto

Comet Points 4606

Le JSON que vous recevez est en string. Vous devez le convertir en objet JSON. Vous avez commenté la ligne de code la plus importante

data = JSON.parse(data);

Ou si vous utilisez jQuery

data = $.parseJSON(data)

0 votes

Même en décommentant la ligne, je reçois undefined (non défini)

0 votes

C'est parce que votre JSON est un tableau. Essayez data[0].name au lieu de data.name. Et assurez-vous que vous accédez à la propriété et non à la valeur, c'est-à-dire data[0].name (propriété) au lieu de ce que vous faites dans votre question data.myName (qui est une valeur).

6voto

Nicola Peluchetti Points 38948

Vous devriez faire

alert(data[0].name); //Take the property name of the first array

et non

 alert(data.myName)

jQuery devrait être capable de renifler le type de données pour vous même si vous ne le définissez pas, donc pas besoin de JSON.parse.

tripoter ici

http://jsfiddle.net/H2yN6/

4voto

Kabilan Points 569

Essayez ce code

function (data) {

var json = jQuery.parseJSON(data);
alert( json.name );

}

0 votes

J'ai déjà essayé et j'ai obtenu une erreur Microsoft JScript runtime error : L'objet ne supporte pas la propriété ou la méthode 'parseJSON'.

2voto

The System Restart Points 2236

Je pense que vous devriez mentionner dataType: 'json' dans la configuration ajax et d'accéder à cette valeur :

data[0].name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X