0

我遇到了 JSONPath 工作的问题。我有两个非常相似的 json 对象,我试图从中获取值。

本质上,对象大致如下所示:

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

我的问题是我需要同时运行这两条路径。对于 Object2,这不会导致任何问题,因为第一个 jsonpath 不返回任何内容。

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

有没有办法阻止这种情况发生?我需要两个 json 路径。他们都返回了公司的名称,但不幸的是数据结构已经改变 - 因此问题

4

1 回答 1

1

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

.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"

(如果您想要不带外引号的名称,可以使用 -r 命令行选项运行 jq。)

于 2019-08-12T08:22:07.350 回答