gpt4 book ai didi

json - 如何在迭代值之前检查 jq 中是否存在 'key'

转载 作者:IT老高 更新时间:2023-10-28 12:55:54 26 4
gpt4 key购买 nike

我从下面的查询中得到 Cannot iterate over null (null) 因为 .property_history 不在 result 对象中。

在继续 map(...) 之前如何检查是否存在 .property_history 键?

我尝试使用类似 sold_year= `echo "$content"| jq '如果有("property_history") 那么
map(select(.event_name == "Sold"))[0].date' else null end

原始查询:

sold_year=`echo "$content" | jq '.result.property_history | map(select(.event_name == "Sold"))[0].date'`

JSON:

{  
"result":{
"property_history":[
{
"date":"01/27/2016",
"price_changed":0,
"price":899750,
"event_name":"Listed",
"sqft":0
},
{
"date":"12/15/2015",
"price_changed":0,
"price":899750,
"event_name":"Listed",
"sqft":2357
},
{
"date":"08/30/2004",
"price_changed":0,
"price":739000,
"event_name":"Sold",
"sqft":2357
}
]
}
}

最佳答案

您可以使用 select-expressionjq 中做你打算实现的事情,例如,

jq '.result 
| select(.property_history != null)
| .property_history
| map(select(.event_name == "Sold"))[0].date'

关于json - 如何在迭代值之前检查 jq 中是否存在 'key',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42097410/

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