gpt4 book ai didi

json - 使用 JQ 处理键的存在或不存在

转载 作者:行者123 更新时间:2023-12-04 17:58:32 24 4
gpt4 key购买 nike

我有一个 JSON 文件,其中包含彼此相似但不相同的对象。所有对象都有一个主标识符,但其他键可能存在也可能不存在于一个对象中。

我的问题:对于对象中的给定键,如果它存在,我如何打印出该值,如果不存在,则如何打印“NA”之类的东西,以任何一种方式打印该键的原始名称?

样本输入:

  {
"DBInstances": [
{
"Identifier": 101,
"foo": "some_value",
"bar": 60,
"Model": "A"
},
{
"Identifier": 102,
"foo": "some_value",
"Model": "B"
}
]
}

期望的输出:
          {
"Identifier": 101,
"foo": "some_value",
"bar": 60,
"Model": "A"
},
{
"Identifier": 102,
"foo": "some_value",
"bar": "NA",
"Model": "B"
}

我创建了一个函数,它(部分)适用于不存在,但根本不适用于存在:
  def exist(element):
if (has( element ) == true)
then { element: "true" }
else { element: "NA" }
end;

当我调用它时:
 exist( "bar" )

“存在”部分是完全错误的,因为 JQ 打印的是“元素”和“真”,而不是原始的键名和值。

对于“不存在”部分,JQ 打印“NA”就好了,但是“元素”而不是原始键名。

我正在使用 JQ 1.3。

最佳答案

这是编写“存在”定义的正确方法:

def exist(element):
if has( element )
then { (element): .[element] }
else { (element): "NA" }
end;

这已经用 jq 1.3 测试过,但请尝试升级到更新的版本。

在实践中,人们更有可能使用这样的习语:
if has(element) then . else .[element] = "NA" end

关于json - 使用 JQ 处理键的存在或不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38335869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com