Get access to array in JSON by ReactJS
14,268
I think you're trying to achieve something like this, right: http://codepen.io/zvona/pen/BoQVoj?editors=001
return (
<div>
<h1>Sample data block</h1>
{this.state.data.movies.map(function(movie, i) {
return <h3 key={'movie-'+ i}>{movie.title}</h3>
})}
</div>
);
It loops through the movies
array and .map()
returns the value for each movie to be displayed.
Author by
necroface
Updated on June 30, 2022Comments
-
necroface almost 2 years
I use ReactJS to get data from a JSON file
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>Demo Fetch</title> <link rel="stylesheet" href="style.css" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/react.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.3/JSXTransformer.js"></script> <script src="js/jquery-2.1.4.min.js"></script> </head> <body> <div id="content"></div> <script type="text/jsx"> var DataBlock = React.createClass({ getInitialState:function(){ return {data:[]}; }, componentDidMount:function() { var a=this; $.getJSON(this.props.url, function(data) { a.setState({data:data}) }); }, render: function() { console.log(this.state); return ( <div> <h1>Sample data block</h1> <h3>{this.state.data.movies[0].title}</h3> </div> ); } }); React.render( <DataBlock url="small_data.json"/>, document.getElementById('content') ); </script> </body> </html>
And this is JSON file
small_data.json
{ "movies": [ { "abridged_cast": [ { "characters": [ "Dominic Toretto" ], "id": "162652472", "name": "Vin Diesel" }, { "characters": [ "Brian O'Conner" ], "id": "162654234", "name": "Paul Walker" } ], "synopsis": "Continuing the global exploits in the unstoppable franchise built on speed, Vin Diesel, Paul Walker and Dwayne Johnson lead the returning cast of Fast & Furious 7. James Wan directs this chapter of the hugely successful series that also welcomes back favorites Michelle Rodriguez, Jordana Brewster, Tyrese Gibson, Chris \"Ludacris\" Bridges, Elsa Pataky and Lucas Black. They are joined by international action stars new to the franchise including Jason Statham, Djimon Hounsou, Tony Jaa, Ronda Rousey and Kurt Russell.", "title": "Furious 7", "year": 2015 } ], "runtime": 140 }
Neither
title
nor anything else is displayed. But when I try to display a non-array object in JSON file, likeruntime
, I just use{this.state.data.runtime}
, it shows as expected, but how can I get access tomovies
array? I thought I use proper syntax to retrive the array. If it's not like this, what is the true one? How can I get data from objects in array in JSON and store in variables in ReactJS?