gpt4 book ai didi

json - jq - 将复杂的 JSON 解析为字符串

转载 作者:行者123 更新时间:2023-12-01 15:03:02 27 4
gpt4 key购买 nike

我正在尝试使用 jq 来解析类似于以下内容的 JSON:

{
"username": "billy",
"hero": {
"something": "goeshere"
},
"bumper": {
"bumper2": {
"bumper3": "splodge"
}
},
"morgan": [{
"abc": 123
}, 2, 4, {
"def": 567
}],
"password": "issilly"
}

进入

request.username == 'billy' && request.hero.something == 'goeshere' && request.bumper.bumper2.bumper3 == 'splodge' && request.morgan[0].abc == 123 && request.morgan[1] == 2 && request.morgan[2] == 4 && request.morgan[3].def == 567 && request.password == 'issilly'

到此为止

jq '. | to_entries[] | "request.\(.key) == '\(.value)'"'

这让我走到了那里,但我无法弄清楚如何“深入”到深层嵌套的元素,也无法弄清楚如何将生成的字符串连接到用 '&& ' 分隔的单行中

最佳答案

paths(scalars) 输出表示 . 中字符串和数字路径的数组,使用 getpath 可以获取这些路径的值。所以你所需要的只是一个将路径表示转换为路径表达式的函数,比如:

def pr2pe:
reduce .[] as $n ([];
if $n|type == "string"
then . + [$n]
elif $n|type == "number" and length
then .[-1] += "[\($n)]"
else error("invalid path representation")
end) | join(".");
[ paths(scalars) as $p
| "\($p | pr2pe) == \(getpath($p) | tojson)" ]
| join(" && ")

查看 jqplay

关于json - jq - 将复杂的 JSON 解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57474828/

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