2017-03-07 16 views
0

次のJSON出力を使用してAPIからデータを取得しようとしています。APIオブジェクトからのデータの抽出

console.log(users)でapiの出力を見ることができるので、データは関数に渡されます。

"data"に含まれる配列を出力しようとしていますが、データにアクセスできないようです。

{ 
    "dataCount": 2, 
    "data": [ 
    { 
     "name": "Test review header", 
     "text": "This is adescription for a test review", 
     "img": "http://pngimg.com/upload/pigeon_PNG3423.png" 
    }, 
    { 
     "name": "Test review header2", 
     "text": "This is adescription for a test review2", 
     "img": "http://pngimg.com/upload/pigeon_PNG3422.png" 
    } 
    ] 
} 

renderUsers() { 

    const { users } = this.props; 

    console.log(users); 

    Object.keys(users).map(name => users[name]) 
     console.log(users[name]); 
    }; 
+0

おそらく、あなたはAPIから受け取ったオブジェクトの一部を提供することができますか? – Jules

+0

私はそれを明確にするために質問を更新しました。クロムではオブジェクトとして表示され、このオブジェクト内のデータ配列にアクセスしようとしています –

+0

は上記のJSONユーザーですか? – paqash

答えて

1

参照:配列は

あなたが、その後このような機能を持っている可能性がありますユーザーのフィールド。

listsを使用している場合は、keyプロパティを指定して、リスト内の各アイテムを把握しておく必要があります。

+0

http://api.github.com/usersにアクセスしようとするとうまくいきますが、私自身のAPIにヒットしたときに(予想通りに)キャッチします。TypeError:users.mapは関数ではないでしょう。オブジェクトに? –

+0

またはUncaughtを取得しましたTypeError:未定義のプロパティ 'map'を読み取れません –

0

まず第一に、私は反応を使用しませんが、あなたが望むものは他のjavascriptフレームワークで同じである必要があります。

あなたが受け取ったJSONは本当ですか?

通常のテキストではなくJSONオブジェクトを受け取る必要があります。機能があるとしますparseResponse(data)JSON.parse(data)を呼び出して、データパラメータをjsonオブジェクトに解析することができます。結果を変数に格納することもできます。

JSONオブジェクト

を使用して、我々はあなたがJSONオブジェクトに解析されたのparamを持っていることを確認している、我々はそれがデータのget。たとえば、あなたがデータ内の最初のオブジェクトの名前を取得したい場合は、あなたが呼び出すことができます。 parsedJson.data[0].name parsedJsonがJSON.parse(data)の結果であり、 データはJSONでのオブジェクトの配列で、 0はの最初のオブジェクトでありますあなたが反復処理する必要のあるデータは中に存在する

function parseResponse(data) { 
    var parsedJson = JSON.parse(data); 
    for(var i = 0; i < parsedJson.data.length; i++) { 
     console.log(parsedJson.data[i].name); 
    } 
} 

jsfiddle

関連する問題