web-dev-qa-db-fra.com

Comment accéder au nom / à la valeur de l'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 voir cette fonction de rappel de $.ajax en prenant JSON les données du contrôleur.

Par exemple:

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

Dans ce cas, ma première alerte me donnant un message indéfini et une deuxième/troisième alerte affiche:

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

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

69
RollerCosta

Au lieu d’analyser JSON, vous pouvez procéder comme suit:

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

Pour accéder à une propriété de votre JSON, procédez comme suit:

data[0].name;

data[0].address;

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

Et pour accéder à la propriété d'une règle d'objet 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 n'êtes pas

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

102
thecodeparadox

Le JSON que vous recevez est en chaîne. 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)
29
Obi-Wan Spock

Si votre réponse ressemble à {'customer':{'first_name':'John','last_name':'Cena'}}

var d = JSON.parse(response);
alert(d.customer.first_name); // contains "John"

Merci,

9
Mahendran Sakkarai

Tu devrais faire

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

et pas

 alert(data.myName)

jQuery devrait pouvoir détecter le type de données pour vous même si vous ne le définissez pas, il n'est donc pas nécessaire d'utiliser JSON.parse.

jouer du violon ici

http://jsfiddle.net/H2yN6/

6

Essayez ce code ..

function (data) {


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


}
4
Kabilan S

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

data[0].name
2

Vous voudrez peut-être essayer cette approche:

var  str ="{ "name" : "user"}";
var jsonData = JSON.parse(str);     
console.log(jsonData.name)
//Array Object
str ="[{ "name" : "user"},{ "name" : "user2"}]";
jsonData = JSON.parse(str);     
console.log(jsonData[0].name)
1
Mansuri Nurulhuda

Voici un conseil amical. Utilisez quelque chose comme Outils de développement Chrome ou Firebug pour Firefox afin d'inspecter vos appels Ajax et vos résultats.

Vous voudrez peut-être aussi investir un peu de temps dans la compréhension d’une bibliothèque d’aide telle que nderscore , qui complète jQuery et vous offre plus de 60 fonctions utiles pour manipuler des objets de données avec JavaScript.

0
Butifarra