jq-win64.exe:从 Windows 批处理文件中的 JSON 文件解析数据
Posted
技术标签:
【中文标题】jq-win64.exe:从 Windows 批处理文件中的 JSON 文件解析数据【英文标题】:jq-win64.exe: Parsing data from a JSON file in Windows Batch File 【发布时间】:2022-01-03 00:13:03 【问题描述】:我有以下 JSON 文件 (song.json),其中包含:
"Result": [
"ItemTitle": "Sometimes It Hurts",
"Artists": [
"Voost"
],
"MediaEnd": "00:02:15.8490000",
"Extro": "00:02:12.8200000",
"MediaId": 9551,
"ActualLength": "00:02:12.8200000",
"ItemType": "Song"
,
"ItemTitle": "Been a Long Time (Full Intention 2021 Remix)",
"Artists": [
"The Fog"
],
"MediaEnd": "00:03:11.3170000",
"IntroEnd": "00:00:07.4700000",
"Extro": "00:03:08.6300000",
"MediaId": 9489,
"ActualLength": "00:03:08.6300000",
"ItemType": "Song"
],
"ExceptionMessage": null,
"FailMessage": null,
"ExceptionTypeName": null
我想提取第一个“ItemTitle”和第一个“Artist”并将它们保存为变量。
在这个例子中,我正在寻找的结果是:
ItemTitle=Sometimes It Hurts
Artist=Voost
我一直在尝试使用 jq-win64.exe,因为它需要在 Windows 批处理文件中运行,但我无法获得正确的语法。我尝试了在这里找到的各种示例,但它们似乎都没有按要求工作。任何人都可以提出解决方案吗?
【问题讨论】:
您可以使用jq -r 'Result[].ItemTitle, Result[].Artist song.json'
来提取所需部分的值。
对不起,我发现我留下了一个错字。使用jq -r .Result[].ItemTitle, .Result[].Artists[] song.json
。看看this
@Barbaros Özhan - 谢谢,但我收到错误:jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Windows cmd shell quoting issues?) at 首先要做的事情。
由于您似乎在几个方面都遇到了麻烦,我建议您首先让您的 jq 查询以您想要的方式工作 通过使用带有 -f 命令行选项的 jq。这样,您可以编写查询而不必担心 用于在命令行上转义字符的 Windows 规则。当结果如你所愿时,你甚至可能决定 别管它。
接下来,要获取您想要的值,您似乎需要这样的 jq 查询:
.Result | first(.[].ItemTitle), first(.[].Artists[])
使用您的 JSON,这会产生:
Sometimes It Hurts
Voost
但是您说您希望这些值采用 KEY=VALUE 形式。这可以通过修改基本查询来实现,例如如下:
.Result|"ItemTitle=\(first(.[].ItemTitle))", "Artist=\(first(.[].Artists[]))"
不知何故,我怀疑这是否真的是你想要的,但其余的应该是一帆风顺的。
【讨论】:
在@Barbaros Özhan 的帮助下,我们确定了正确的过滤器是:--raw-output '.Result[0].ItemTitle, .Result[0].Artists[]'
但是,我在 Windows 命令行中使用 jq-win64.exe,当我输入以下内容时:@ 987654325@ 我得到:jq: error: syntax error, unexpected INVALID_CHARACTER, expecting $end (Windows cmd shell quoting issues?) at <top-level>, line 1: '.Result[0].ItemTitle, jq: 1 compile error
我想我快到了,所以任何进一步的指导将不胜感激。
cmd.exe 只能识别双引号,不能识别单引号。以上是关于jq-win64.exe:从 Windows 批处理文件中的 JSON 文件解析数据的主要内容,如果未能解决你的问题,请参考以下文章
如何在批处理bat文件中,以管理员的身份运行其他exe安装程序?
JAVA 环境安装包 JDK 64位 jdk-8u221-windows-x64.exe