-3

私は問題があります。jQuery の配列内のオブジェクトにアクセスする必要があります。

私のjson:

{"employ": [
{
    "id": 46846,
    "name": "some name",
    "schedule": "main",
    "hours": {
        "11.09.2012": 5,
        "12.09.2012": 8
    }
}
,
{
    "id": 3543,
    "name": "another name",
    "schedule": "main",
    "hours": {
        "11.09.2012": 9,
        "12.09.2012": 7
    }
}
]}

そして私のjquery:

$(document).ready(function(){
      $("#click").click(function(){
          $.getJSON('employ.json', {}, function(json){
              $("#userid").append(json.employ[0].hours.????);
          });
      })
  });

「????」のある場所に必要なコードは何ですか 「11.09.2012」という名前の要素にアクセスするには?

4

1 に答える 1

8

["key"]次のように、「インデックス」に使用するだけです。

json.employ[0].hours["11.09.2012"]

JavaScript オブジェクトは、2 つの方法でそのアイテムにアクセスできます。ドット表記 ( .name) またはブラケット表記 ( )のいずれかを使用します["name"]。明らかに、["name"]あなたの場合 (アイテムに無効な識別子が含まれている場合) など、いくつかの場合に使用されます。どちらの方法でも構いませんが、好みや状況によって異なります。

JSON を直接操作しない場合、JavaScript オブジェクトは各項目を文字列として宣言する必要がないため、次のようにすることができます。

var json = {asdf: "fdsa", aaa: "fff"};

そして、それは完全に有効です。ただし、このタイプの宣言では、通常の変数の名前付けに使用される有効な文字のみを (有効な識別子として) 使用できます。したがって、この場合、常にドット表記を使用できるはずです。

実際の JSON 通信で作業する場合、すべてのキー (アイテム) は文字列として格納されるため、「無効な」文字が許可されます。ただし、キーに無効な文字が含まれている場合は、ブラケット表記 ( []) を使用する必要があります。[]特に動的にアイテムを取得および設定する最も安全な方法です。動的とは、次のようなことを意味します。

for (var i = 0; i < 10; i++) {
    if (("test"+i) in json && json["test"+i] > 10) {
        // do something
    }
}

上記では、次のようなことはできません。

json.test+i

そして、あなたが望むことをさせてください。

于 2012-09-14T13:42:52.097 に答える