我知道以前曾问过此类问题,例如 this 和 this 。从这些问题中我得到了这段代码。相信我是 React Native 和 Javascript 的新手。我有两个麻烦 1.我需要获取这样的数据
[
{
"title": {
"StudentName": "DIYA",
"studentId": "00002",
"name": "DIYA",
"parentName": "BIJU V",
"dob": "18 Dec 2009",
"image": "234567890"
},
"member": [
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "85.000"
},
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "50.000"
}
]
},
{
"title": {
"StudentName": "PONNU",
"studentId": "00003",
"name": "PONNU",
"parentName": "BIJU V",
"dob": "17 Oct 2009",
"image": "234567890"
},
"member": [
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "90.000"
},
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "55.000"
}
]
}]
但我得到的是
[
{
"title": {
"StudentName": "PONNU",
"studentId": "00003",
"name": "PONNU",
"parentName": "BIJU V",
"dob": "17 Oct 2009",
"image": "234567890"
},
"member": [
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "85.000"
},
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "50.000"
},
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "90.000"
},
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "55.000"
}
]
},
{
"title": {
"StudentName": "PONNU",
"studentId": "00003",
"name": "PONNU",
"parentName": "BIJU V",
"dob": "17 Oct 2009",
"image": "234567890"
},
"member": [
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "85.000"
},
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "50.000"
},
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "90.000"
},
{
"title": "PONNU",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "55.000"
}
]
}
]
我有两个 api 响应,需要将它们组合起来形成第一个 json。但我似乎没有按预期计算出第二个 json 的输出是 `
var studentsDetailJson = [];
var eachItem = {
title: {},
member: []
};
this.state.data.map((stuItem) => {
eachItem.title = {
"StudentName": stuItem.StudentName,
"studentId": stuItem.StudentID,
"name": stuItem.StudentName,
"parentName": stuItem.FatherName,
"dob": stuItem.DOB,
"image": "234567890"
};
console.log("stu" + JSON.stringify(stuItem));
this.state.feesDetails.map((feesItem) => {
if (stuItem.StudentName === feesItem.StudentName) {
// console.log("fees" + JSON.stringify(feesItem))
eachItem.member.push({
"title": feesItem.StudentName,
"date": feesItem.FeeDueDate,
"month": "Apr",
"type": feesItem.FeeDescription,
"amount": feesItem.FeeAmount
});
}
});
console.log("eachitem.title" + JSON.stringify(eachItem.title))
studentsDetailJson.push(eachItem);
});
console.log("feeitem"+JSON.stringify(studentsDetailJson))
this.setState({
processedData : (studentsDetailJson),
hasData : true
});
`
在学生姓名下,我只需要获取该学生的详细信息。但正在获取两个学生的数据。另外,它在子数组的第二个 json 项中显示相同的学生姓名(请参阅第二个 json 响应),我不知道出了什么问题。请帮忙。
编辑 1
我刚刚注意到,在 this.state.data 第一次迭代之后,我儿子的响应看起来像这样`
[
{
"title": {
"StudentName": "DIYA",
"studentId": "00002",
"name": "DIYA",
"parentName": "BIJU V",
"dob": "18 Dec 2009",
"image": "234567890"
},
"member": [
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "TUTION FEE",
"amount": "85.000"
},
{
"title": "DIYA",
"date": "31 Aug 2108",
"month": "Apr",
"type": "BUS FEE",
"amount": "50.000"
}
]
}
]
`
在下一次迭代之后,它看起来像上面提到的输出 json
问题已解决
留下解决方案,因为它有时可能会对某人有所帮助。
我修改了下面的代码`
var studentsDetailJson = [];
this.state.data.map((stuItem) => {
var eachItem = {
title: {},
member: []
};
eachItem.title = {
"StudentName": stuItem.StudentName,
"studentId": stuItem.StudentID,
"name": stuItem.StudentName,
"parentName": stuItem.FatherName,
"dob": stuItem.DOB,
"image": "234567890"
};
//console.log("stu" + JSON.stringify(stu));
this.state.feesDetails.map((feesItem) => {
if (stuItem.StudentName === feesItem.StudentName) {
console.log("fees" + JSON.stringify(stuItem.StudentName))
eachItem.member.push({
"title": feesItem.StudentName,
"date": feesItem.FeeDueDate,
"month": "Apr",
"type": feesItem.FeeDescription,
"amount": feesItem.FeeAmount
});
}
});
studentsDetailJson.push(eachItem);
`
提前致谢
最佳答案
您正在将详细信息推送到 eachItem.member
。
eachItem.member = this.state.feesDetails.map((feesItem) => {
if (stuItem.StudentName === feesItem.StudentName) {
// console.log("fees" + JSON.stringify(feesItem))
return {
"title": feesItem.StudentName,
"date": feesItem.FeeDueDate,
"month": "Apr",
"type": feesItem.FeeDescription,
"amount": feesItem.FeeAmount
});
}
});
这可能是解决方案之一。但我建议重新考虑使用临时变量,因为我猜我们正在改变临时变量。
关于javascript - 在react-native中动态创建json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52690419/