如何停止JSON路径返回对象

时间:2019-08-12 08:05:09

标签: json jsonpath json-path-expression

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

基本上,这些对象大致如下所示:

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

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

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

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

1 个答案:

答案 0 :(得分: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。)