2017-01-17 20 views
1

私の残りのAPIが返す:私はこのコードでリストを反復処理していますコンバートJSON次のようなJSONコンテンツと

[{ 
    "key": "apple", 
    "value": "green" 
}, 
{ 
    "key": "banana", 
    "value": "yellow" 
}] 

this.props.json.map(row => { 
    return <RowRender key={id.row} row={row} /> 
} 

コンテンツが表示されるので、それは動作しますしかし、Webブラウザのコンソール上で、私は、エラーを見ることができます:

map is not a function

は、私はそれをGoogleで検索し、私はTHIに私のコードを変更しましたs:

Array.prototype.slice.call(this.props.json).map(row => { 
    return <RowRender key={id.row} row={row} /> 
} 

これはエラーなく動作しますが、複雑に見えます。それはこの仕事をする正しい方法ですか?


UPDATE

私が試したもの:

  • JSON.parse(...)マップ:JSON入力の予期しない終わり
  • JSON.parse(JSON.stringify (...))。map(...):データは表示されますが、エラーが表示されます:JSON.parse(...)。mapは関数ではありません
  • 配列配列内の子またはイテレータは、一意のキー。
+0

*正確に* 'this.props何ですか:どのようなあなたは、この問題を解決するために行うと.slice()

これを行うには、よりエレガントな方法で、配列にその配列のようなオブジェクトに変換されます.json' ...?どのように作成されますか? '{...}、{...}'は有効なJSONでもJavascriptでもありません。 – deceze

+0

'Array.prototype.slice.call(this.props.json)'の代わりに 'Array(this.props.json)'を使うことができますが、とにかくアプリケーションに問題があるようです。あなたのAPIからの完全な出力ですか? –

+1

が更新されました。今のところよく見えます – zappee

答えて

1

あなたのコードthis.props.jsonは配列ではありません、それは配列のようなオブジェクトであり、マップは配列関数です。

Array.from(this.props.json).map(row => <RowRender key={id.row} row={row} />) 
関連する問題