我在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路径。他们俩都返回了公司的名称,但不幸的是数据结构已更改-因此出现了问题
答案 0 :(得分:1)
如果您愿意使用jq,那么解决编写查询以检索公司名称的问题的解决方案非常简单:
.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。)