在 JS 中使用 map() 解析 JSON
Posted
技术标签:
【中文标题】在 JS 中使用 map() 解析 JSON【英文标题】:Parse JSON using map() in JS 【发布时间】:2022-01-20 15:48:03 【问题描述】:我需要从这样的 JSON 中获取所有“需要”值:
var body = "payload":[
"analitic":
"id": 9448,
"name": "Group"
,
"key": 27,
"data": [
"id": 35368,
"name": "sku",
"value": "1",
"valueId": "Need_1"
]
,
"analitic":
"id": 9448,
"name": "Group"
,
"key": 110,
"data": [
"id": 35368,
"name": "sku",
"value": "1",
"valueId": "Need_2"
]
]
我认为为此使用 map()。我在正确的轨道上吗?我如何获得这些值? (我把json缩小了,原来还有很多其他字段我不需要)
更新: 研究了codecademy后的解决方案竟然是这样的:
body.payload.map(function(i) return i.data.filter(function(j)
return j.id == 35368).map(function(k)
return k.valueId)).join(",")
// result: "Need_1, Need_2"
【问题讨论】:
有什么问题? JS 中任何以=
开头的都不是 JSON。
【参考方案1】:
学习了codecademy之后的解决方案竟然是这样的:
body.payload.map(function(i) return i.data.filter(function(j)
return j.id == 35368).map(function(k)
return k.valueId)).join(",")
// result: "Need_1, Need_2"
【讨论】:
【参考方案2】:考虑到您的“数据”键是一个只有 1 个元素的数组,您可以在数组中提取需要的值,如下所示:
var body = "payload":[
"analitic":
"id": 9448,
"name": "Group"
,
"key": 27,
"data": [
"id": 35368,
"name": "sku",
"value": "1",
"valueId": "Need_1"
]
,
"analitic":
"id": 9448,
"name": "Group"
,
"key": 110,
"data": [
"id": 35368,
"name": "sku",
"value": "1",
"valueId": "Need_2"
]
]
var res = body['payload'].map((arr)=>arr['data'][0]['valueId']);
console.log(res);
【讨论】:
“原始数据中还有许多其他字段我不需要” - 因此,虽然这适用于问题中的数据,但它可能不适用于实际数据。以上是关于在 JS 中使用 map() 解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章
js解析json,js转换json成map,获取map的key,value