我有一个 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 文件必须在“根”处包含一个“元素”,它可以是对象 (
{...}
) 或数组 ([...]
)。
在您的情况下,JSON 由多个对象组成,因此您必须将它们包装在一个数组中。尝试在文件开头插入
[
,在文件末尾插入 ]
,不要更改任何其他内容。
然后再次尝试拨打 jq。