json parse isse with nested response reactjs



我正在尝试解析 json 响应

[{
"province": "abc",
"county": "aa",
"timeline": {
"cases": {
"4/11/20": 4,
"4/12/20": 5
},
"recover": {
"4/11/20": 0,
"4/12/20": 1
}
}
}]

虽然我能够获得"县"值,但我无法进入时间线数据。它要么给我未定义的问题,要么给 [obejct 对象] 作为日志。下面是我的代码。

parseTimeLineData(resData)
{
let  timeLine = [];
resData.map(data =>
{
let dd = data.timeline;
Object.keys(dd).map((key, i) => {
var one = {key}
alert(one);
var value = dd[key]
})
});  
}

我的要求是解析案例并恢复节点并将它们保存在单独的数组中以供进一步使用。还需要知道如何只从大数组中获取第一个索引值。

use JSON.stringify

[{
"province": "abc",
"county": "aa",
"timeline": {
"cases": {
"4/11/20": 4,
"4/12/20": 5
},
"recover": {
"4/11/20": 0,
"4/12/20": 1
}
}
}].map(data => Object.keys(data.timeline).map(item => alert(JSON.stringify(data.timeline[item]))))

我仍然不太确定您如何想要这些数组,因为您还没有提供具体示例。所以,我盲目地猜测你的data中会有其他对象,不知何故你想以某种方式积累casesrecover值,然后在将来使用这些值。所以,这里有一个reduce的例子:

const data = [
{
province: "abc",
county: "aa",
timeline: {
cases: {
"4/11/20": 4,
"4/12/20": 5,
},
recover: {
"4/11/20": 0,
"4/12/20": 1,
},
},
},
{
province: "xyz",
county: "bb",
timeline: {
cases: {
"4/13/20": 40,
"4/14/20": 50,
},
recover: {
"4/13/20": 10,
"4/14/20": 5,
},
},
},
];
function parseTimeLineData(resData) {
return resData.reduce((acc, data) => {
const newCases = Object.entries(
data.timeline.cases
).map(([key, value]) => ({ [key]: value }));
const newRecovers = Object.entries(
data.timeline.recover
).map(([key, value]) => ({ [key]: value }));
acc.cases = !acc.cases ? newCases : [...acc.cases, ...newCases];
acc.recover = !acc.recover ? newRecovers : [...acc.recover, ...newRecovers];
return acc;
}, {});
}
const reducedValues = parseTimeLineData(data);
console.log(reducedValues);

我不太确定这是否是您想要的结构,但我将其作为示例。

最新更新