在 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

js解析后台map转成的json方法

js解析后台json数据

js解析后台json数据

使用 Kotlinx.serialization 将 JSON 数组解析为 Map<String, String>

使用 Google map api 在 android Studio 中解析 Json