Python PYJQ将嵌套字段映射到多个顶级字段

2024-05-19 12:52:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将一些json数据映射到不同的模式。我的原始模式和相关字段如下所示

"metrics":[  
  {  
     "type":"active_duration",
     "unit":"s",
     "value":135.0
  },
  {  
     "type":"basal_energy_burned",
     "unit":"kcal",
     "value":2371.7412956
  },
  {  
     "type":"distance",
     "unit":"m",
     "value":1510.36558533
  },
  {  
     "type":"active_energy_burned",
     "unit":"kcal",
     "value":295.203469907
  },
  {  
     "type":"steps",
     "unit":"count",
     "value":1877
  },
  {  
     "type":"energy_burned",
     "unit":"kcal",
     "value":2666.944765507
  }
   ],

和期望输出

{
    "valueQuantity" : { "unit" : "count", "value" : 1877} ,
    "category" : "steps"
},
{
    "valueQuantity" : { "unit" : "kcal", "value" : 2666.944765507} ,
    "category" : "energy_burned"
}
....

我试过这个

import pyjq

t = pyjq.all("""
    {
        "valueQuantity" : .metrics[] | { "unit" : .unit, "value" : .value} ,
        "category" : .metrics[].type
    }""", data)

但问题是.metrics[]运行不止一行,我最终有36行(而不是6行) 有没有办法做到这一点


Tags: jsonvaluetypecount模式unitstepsmetrics
1条回答
网友
1楼 · 发布于 2024-05-19 12:52:48

你大概是说:

.metrics[] | { "valueQuantity" : { "unit" : .unit, "value" : .value}, "category" : .type }

可缩短为:

.metrics[] | { valueQuantity: {unit, value}, category: .type }

相关问题 更多 >