如何停止 JSON 路径返回对象

How to stop JSON Path returning object

我在使用 JSONPath 时遇到问题。我有两个非常相似的 json 对象,我试图从中获取值。

基本上对象大致是这样的:

Object1: {Company: {Organisation: {Official Name: "Name"}}
jsonpath1: Company..Organisation..Official Name
Object2: {Company: {Organisation:"Name"}}
jsonpath2: Company..Organisation

我的问题是我需要这两条路径 运行。对于 Object2,这不会导致任何问题,因为第一个 json 路径不会 return 任何东西。

然而,对于 object1,jsonpath 1 returns 是所需的值。但是,对于此记录 jsonpath2 也 return 值 Object 对象。

有什么办法可以阻止这种情况发生吗?我需要两个 json 路径。他们都是 return 公司名称,但不幸的是数据结构已更改 - 因此出现问题

如果您愿意使用 ,那么编写检索公司名称的查询的问题的解决方案非常简单:

.Company.Organisation | if type == "string" then . else ."Official Name" end

例子

例如,如果 company.json 包含以下行:

{"Company": {"Organisation": {"Official Name": "Name1"}}}
{"Company": {"Organisation": "Name2"}}

然后运行宁

的结果
jq '.Company.Organisation | if type == "string" then . else ."Official Name" end' company.json

将是:

"Name1"
"Name2"

(如果你想要不带外引号的名字,你可以 运行 jq 加上 -r 命令行选项。)