web-dev-qa-db-ja.com

名前にドットが含まれている場合、JSONオブジェクトの値を取得する方法は?

非常に単純なJSON配列があります("points.bean.pointsBase"オブジェクトに注目してください):

var mydata =   
{"list":  
  [  
    {"points.bean.pointsBase":  
      [  
        {"time": 2000, "caption":"caption text", duration: 5000},  
        {"time": 6000, "caption":"caption text", duration: 3000}  
      ]  
    }  
  ]  
};  

// Usually we make smth like this to get the value: 
var smth = mydata.list[0].points.bean.pointsBase[0].time; 
alert(smth); // should display 2000

しかし、残念ながら、何も表示されません。
私が"points.bean.pointsBase"を変更すると、名前にドットのないsmthになります-すべてが機能します!

ただし、この名前をドットなしで他の名前に変更することはできませんが、値を取得する必要がありますか?!
取得するオプションはありますか?

87
Nik Sumeiko

あなたが欲しいのは:

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;

JavaScriptでは、を使用してアクセスできるフィールド。演算子の場合、[]を使用してフィールド名の文字列バージョンでアクセスできます。

184
Russell Leggett

javaScriptでは、を使用してオブジェクトプロパティにアクセスできます。演算子または[]を使用した連想配列のインデックス付き。すなわち。 object.propertyobject["property"]と同等です

これはトリックを行う必要があります

var smth = mydata.list[0]["points.bean.pointsBase"][0].time;
24
z33m

["points.bean.pointsBase"]

16
TK.

Jsonオブジェクトのキー/名前にドットが含まれている場合......!好む

var myJson = {"my.name":"vikas","my.age":27}

のようにアクセスできるより

myJson["my.name"]
myJson["my.age"]
1
Vikas s kumar

更新されたソリューションを使用するには、lodashユーティリティを使用してみてください https://lodash.com/docs#get

0
Ashutosh Ranjan