Мне было интересно, как получить данные json в массиве массивов.
Я хочу иметь возможность выбирать группы на основе group_id и перечислять всех пользователей в этом group_id, а также все их учетные данные. Вот как выглядит структура данных json:
{
"groups": [
{
"group_id": 736,
"members": [
{
"user_id": 1,
"email": "[email protected]",
"first_name": "John",
"last_name": "Doe"
},
{
"user_id": 14,
"email": "[email protected]",
"first_name": "Be",
"last_name": "Hg"
},
{
"user_id": 10,
"email": "[email protected]",
"first_name": "Sugar",
"last_name": "Tea"
}
]
},
{
"group_id": 737,
"members": [
{
"user_id": 3,
"email": "[email protected]",
"first_name": "Kent",
"last_name": "Torrel"
},
{
"user_id": 12,
"email": "Chh",
"first_name": "Dog",
"last_name": "Go"
},
{
"user_id": 15,
"email": "",
"first_name": "",
"last_name": ""
}
]
},
{
"group_id": 738,
"members": [
{
"user_id": 6,
"email": "[email protected]",
"first_name": "Raj",
"last_name": "Parikh"
},
{
"user_id": 2,
"email": "[email protected]",
"first_name": "Vathana",
"last_name": "Him"
},
{
"user_id": 11,
"email": "[email protected]",
"first_name": "Sugar",
"last_name": "Tea"
}
]
},
{
"group_id": 739,
"members": [
{
"user_id": 13,
"email": "Hdh",
"first_name": "Ou",
"last_name": "Hm"
},
{
"user_id": 9,
"email": "[email protected]",
"first_name": "Larry",
"last_name": "Jones"
},
{
"user_id": 4,
"email": "[email protected]",
"first_name": "Megan",
"last_name": "Cruz"
}
]
},
{
"group_id": 740,
"members": [
{
"user_id": 8,
"email": "[email protected]",
"first_name": "Jajsdjao",
"last_name": "Doe"
},
{
"user_id": 16,
"email": "",
"first_name": "",
"last_name": ""
},
{
"user_id": 5,
"email": "[email protected]",
"first_name": "Liron",
"last_name": "Benjamin"
}
]
}
]
}
Пока это то, что у меня есть, но это только тянет пользователя group_id в первом индексе. Я пробовал использовать "item.members.user_id", но ничего не появляется.
constructor(props) {
super(props);
this.state = {
isLoading: false,
dataSource: null,
}
}
componentDidMount(){
return fetch('https://strengthn-backend.herokuapp.com/activeGroups')
.then((response) => response.json())
.then((responseJson) => {
this.setState({
isLoading: false,
dataSource: responseJson.groups,
})
})
.catch((error) => {
console.error(error);
});
}
addPerson() {
if (this.state.isLoading) {
return (
<List>
{console.info(this.state.dataSource)}
<FlatList
data = {this.state.dataSource}
renderItem = {({item})=> (
<Text>{item.members[0].user_id}</Text>
)}
/>
</List>
)
}

Цикл for необходим, иначе он будет получать только первые данные. Попробуйте это:
export default class Test extends React.Component{
constructor(){
super();
this.state = {
dataSource:'',
}
}
componentDidMount(){
this.fetchAPI()
}
fetchAPI= async() => {
let that= this;
await fetch('https://strengthn-backend.herokuapp.com/activeGroups')
.then(response => response.json())
.then(response => {
that.setState({ dataSource: response.groups})
}).catch((error) => {
Alert.alert("Error")
return;
})
// console.warn("mana", this.state.dataSource);
}
_renderItem = ({item}) => {
let temp = []
for(var i=0; i < item.members.length; i++){
temp.push(
<View>
<Text>{item.members[i].first_name} </Text>
<Text>{item.members[i].last_name}</Text>
</View>
)
}
return temp
}
render(){
return(
<View>
<FlatList
data = {this.state.dataSource}
renderItem= {this._renderItem}
/>
</View>
)
}
}
Надеюсь, поможет!