1
  1. コントローラーでは、私のコードは次のようになります。

    format.json {render :json=>{
      :entities => @entities,
      :entity_category_counters => @entity_category_counters
    }}
    
  2. ブラウザ側では、私のコードは次のようになります。

    $.getJSON('/entities.json',function(data){
    //data.entities
    //data[0].entities
    //data['entities']
    });
    

    返された JSON オブジェクトのデータにアクセスするためにどの方法を使用しても、うまくいきません。

  3. 返される JSON は次のようになります。

    {"entities":[{"entity":{"created_at":"2011-08-01T18:14:32Z","description":"xxx"}},{"entity":{"created_at":"2011 -08-01T18:16:02Z","説明":"xxx"}}],"entity_category_counters":[{"entity_category_counter":{"comment_category_id":1,"counter":4,"entity_id":1, "id":1,"important_tag":false}},{"entity_category_counter":{"comment_category_id":2,"counter":0,"entity_id":1,"id":2,"important_tag":false} },{"entity_category_counter":{"comment_category_id":3,"counter":0,"entity_id":1,"id":3,"important_tag":false}},{"entity_category_counter":{"comment_category_id":1,"counter":3,"entity_id":2,"id":4,"important_tag":false}},{"entity_category_counter":{"comment_category_id":2,"counter":0," entity_id":2,"id":5,"important_tag":false}},{"entity_category_counter":{"comment_category_id":3,"counter":1,"entity_id":2,"id":6," important_tag":false}}]}entity_id":2,"id":6,"important_tag":false}}]}entity_id":2,"id":6,"important_tag":false}}]}

  4. 次のように Alert を使用してデータを直接表示すると、次のようになります。

    $.getJSON('/entities.json',function(data){
    //data.entities
    //data[0].entities
    //data['entities']
    alert(data);
    
    });
    

メッセージ ボックスの結果は次のようになります。

    [object Object],[object Object]

では、返された 2 つのオブジェクトを含む JSON オブジェクトのデータを解析してアクセスする方法を誰か教えてもらえますか? 前もって感謝します!

4

1 に答える 1

3

JSON は JavaScript Object Notation の略なので、この時点では純粋な JavaScript で作業しています。次のようなことができます。

data.entities[0].entity.created_at // 2011-08-01T18:14:32Z

あなたのことを混乱させているのは、エンティティが配列であるため、その配列のインデックスにアクセスしてその中のエンティティを取得する必要があることだと思います。次に、エンティティ カテゴリもあります。

役立つことがいくつかあると思います。

  • JSONLint ( http://jsonlint.com/ ) json コードを貼り付けてフォーマットし、オブジェクトが直接アクセスできるか、配列内にあるかを確認できるようにします。その場合は、オブジェクトを反復処理するか、特定のインデックスにアクセスする必要があります。
  • ブラウザ コンソール。Google Chrome では、ページを右クリックして [要素の検査] を選択し、[コンソール] タブをクリックします。そこから、現在のページのコンテキストで JavaScript を実行できます。あなたのjson出力をコンソールに貼り付けて遊んでみました:test = {"entities...
于 2012-10-26T04:56:13.370 に答える