jq - 无法使用字符串“key”索引字符串

问题描述 投票:0回答:1

我有一个 JSON 文件,其中包含类似的记录,如下所示:

  {
    "timeZone": "+0200",
    "deviceCode": 202590286,
    "type": 8,
    "version": 1622385523034,
    "recordId": "TkgTDAAAAAAIAAAArF62vXkBAAA=",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622385516204,
    "endTime": 1622385516204,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "unit": "0",
        "startTime": 1622385516204,
        "endTime": 1622385516204,
        "value": "{\"age\":29,\"basalMetabolism\":2266.0,\"bmi\":34.0,\"bodyAge\":38,\"bodyFatRate\":33.20000076293945,\"bodyScore\":67.0,\"bodySize\":5,\"bodyWeight\":115.19999694824219,\"boneSalt\":3.989405632019043,\"extendAttribute\":\"0\",\"gender\":1,\"heartRate\":84,\"height\":184,\"moisture\":51.61684036254883,\"moistureRate\":44.8062858581543,\"muscleMass\":72.9608154296875,\"pole\":1,\"proteinRate\":21.34735107421875,\"skeletalMusclelMass\":42.30829620361328,\"visceralFatLevel\":20.0}",
        "key": "WEIGHT_BODYFAT_BROAD"
      }
    ]
  },
 {
    "timeZone": "+0200",
    "deviceCode": 202576998,
    "type": 7,
    "version": 1622408526036,
    "recordId": "ZhQTDAAAAAAHAAAAIAvJvXkBAAA=",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622386740000,
    "endTime": 1622386800000,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "unit": "0",
        "startTime": 1622386740000,
        "endTime": 1622386800000,
        "value": "78.0",
        "key": "DATA_POINT_DYNAMIC_HEARTRATE"
      }
    ]
  },
 {
    "timeZone": "+0800",
    "deviceCode": 202590286,
    "type": 8,
    "version": 1622615424878,
    "recordId": "TkgTDAAAAAAIAAAAAHxqy3kBAAA=",
    "dataId": 0,
    "healthDataSource": 0,
    "appType": 1,
    "startTime": 1622615424000,
    "endTime": 1622615424000,
    "samplePoints": [
      {
        "mergedFlag": 0,
        "startTime": 1622615424000,
        "endTime": 1622615424000,
        "value": "{\"age\":29,\"bodyWeight\":114.3,\"extendAttribute\":\"0\",\"gender\":1,\"height\":184,\"pole\":1,\"weightDivision\":2}",
        "key": "WEIGHT_BODYFAT_BROAD"
      }
    ]
  },

我尝试使用

map(select(.key == "WEIGHT_BODYFAT_BROAD"))
来过滤此类记录,但收到错误消息。

jq:错误(位于:22):无法使用字符串“key”jq 索引字符串: 解析错误:第 22 行第 4 列退出处的 ',' 之前的预期值 状态 5

json parsing jq jsonparser
1个回答
0
投票

如果您的代码片段是完整文件,则它缺少围绕所有条目的数组。 JSON 文件必须在“根”处包含一个“元素”,它可以是对象 (

{...}
) 或数组 (
[...]
)。

在您的情况下,JSON 由多个对象组成,因此您必须将它们包装在一个数组中。尝试在文件开头插入

[
,在文件末尾插入
]
,不要更改任何其他内容。

然后再次尝试拨打 jq。

© www.soinside.com 2019 - 2024. All rights reserved.