如何使用jq解析此文件?



我刚刚开始使用jq和json文件,我正在尝试解析一个特定的文件。 我想在命令行中使用jq来做到这一点,但是如果有任何其他方法可以正确执行此操作,我将尝试一下。

文件本身如下所示:

{
"Status": "ok",
"Code": 200,
"Message": "",
"Result": [
{
"ID": 123456,
"Activity": 27,
"Name": Example1",
"Coordinate": {
"Galaxy": 1,
"System": 22,
"Position": 3
},
"Administrator": false,
"Inactive": false,
"Vacation": false,
"HonorableTarget": false,
"Debris": {
"Metal": 0,
"Crystal": 0,
"RecyclersNeeded": 0
},
"Moon": null,
"Player": {
"ID": 111111,
"Name": "foo",
"Rank": 4
},
"Alliance": null
},
{
"ID": 223344,
"Activity": 17,
"Name": "Example2",
"Coordinate": {
"Galaxy": 3,
"System": 44,
"Position": 5
},
"Administrator": false,
"Inactive": false,
"Vacation": false,
"StrongPlayer": false,
"HonorableTarget": false,
"Debris": {
"Metal": 0,
"Crystal": 0,
"RecyclersNeeded": 0
},
"Moon": null,
"Player": {
"ID": 765432,
"Name": "Player 2",
"Rank": 3
},
"Alliance": null
},
(...)
]
}

我需要根据星系/系统/位置提取信息。 例如,拥有一个带有适当过滤器的脚本并执行类似的东西:

./parser --galaxy=1 --system=22 --position=3

它会给我:

ID : 123456
Name : Example1
Activity : 27
...

我尝试使用 curl 来获取我的 json 文件和 jq 来解析我的文件,但我不知道如何提出这种请求。

以下内容应该足以让您上路。

首先,假设JSON在文件名galaxy.json中;其次,假设文件galaxy.jq包含以下内容:

.Result[]
| select(.Coordinate | (.Galaxy==$galaxy and .System==$system and .Position==$position))

然后调用:

jq -f so-galaxy.jq --argjson galaxy 1 --argjson system 22 --argjson position 3 galaxy.json

将产生相应的对象:

{
"ID": 123456,
"Activity": 27,
"Name": "Example1",
"Coordinate": {
"Galaxy": 1,
"System": 22,
"Position": 3
},
"Administrator": false,
"Inactive": false,
"Vacation": false,
"HonorableTarget": false,
"Debris": {
"Metal": 0,
"Crystal": 0,
"RecyclersNeeded": 0
},
"Moon": null,
"Player": {
"ID": 111111,
"Name": "foo",
"Rank": 4
},
"Alliance": null
}

键:值格式

如果您希望输出采用key: value格式,只需将 -r 添加到命令行选项中,并将以下内容附加到 jq 过滤器:

| to_entries[]
| "(.key): (.value)"

输出

ID: 123456
Activity: 27
Name: Example1
Coordinate: {"Galaxy":1,"System":22,"Position":3}
Administrator: false
Inactive: false
Vacation: false
HonorableTarget: false
Debris: {"Metal":0,"Crystal":0,"RecyclersNeeded":0}
Moon: null
Player: {"ID":111111,"Name":"foo","Rank":4}
Alliance: null

相关内容

  • 没有找到相关文章

最新更新