名前にドットが含まれている場合にJSONオブジェクトの値を取得するにはどうすればよいですか?


108

私は非常に単純な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
に変更すると、すべてが機能します。 ただし、この名前をドットなしで他の名前に変更することはできませんが、値を取得する必要がありますか? それを取得するためのオプションはありますか?


回答:


215

あなたが欲しいのは:

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

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


27

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

これでうまくいくはずです

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


4

jsonオブジェクトのキー/名前にドットが含まれている場合......!お気に入り

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

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

myJson["my.name"]
myJson["my.age"]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.