web-dev-qa-db-ja.com

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;

},

ご覧のとおり、この$.ajaxのコールバック関数は、コントローラーからJSONデータを取得します。

例えば:

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

この場合、未定義の2つ目または3つ目のアラートポップアップが表示されます。

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

最初のアラートがmyNameの値であるnameで埋められるように、名前で値にアクセスするにはどうすればよいですか?

66
RollerCosta

JSONを解析する代わりに、次のようにできます。

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

JSONのプロパティにアクセスするには、次を実行します。

data[0].name;

data[0].address;

データが配列であるためにdata[0]が必要な理由は、その内容を取得するにはdata[0](最初の要素)が必要であり、オブジェクト{"name":"myName" ,"address": "myAddress" }が提供されるためです。

そして、オブジェクトルールのプロパティにアクセスするには:

Object.property

または時々

Object["property"] // in some case

だからあなたが必要

data[0].nameなど、必要なものを取得します。


そうでない場合

dataType: jsonを設定したら、$.parseJSON()を使用してそれらを解析し、上記のようなデータを取得する必要があります。

99
thecodeparadox

受信しているJSONは文字列です。 JSONオブジェクトに変換する必要があります。最も重要なコード行をコメントしました。

data = JSON.parse(data);

または、jQueryを使用している場合

data = $.parseJSON(data)
28
Obi-Wan Spock

応答が{'customer':{'first_name':'John','last_name':'Cena'}}のような場合

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

おかげで、

7

やったほうがいい

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

ではなく

 alert(data.myName)

jQueryは、JSON.parseを必要としないように設定しなくても、dataTypeを探知できるはずです。

ここでいじる

http://jsfiddle.net/H2yN6/

6

このコードを試してください..

function (data) {


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


}
4
Kabilan S

私はあなたがajaxの設定でdataType: 'json'を言及し、その値にアクセスする必要があると思う:

data[0].name
2

このアプローチを試してみてください。

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

これはフレンドリーなアドバイスです。 Firefoxで Chrome Developer Tools または Firebug のようなものを使用して、Ajaxの呼び出しと結果を検査します。

nderscore のようなヘルパーライブラリを理解するために時間をかけることもできます。これはjQueryを補完し、JavaScriptでデータオブジェクトを操作するための60以上の便利な機能を提供します。

0
Butifarra