gpt4 book ai didi

javascript - 是否可以使用 JSON 对象在 jq 中进行嵌套查询?

转载 作者:行者123 更新时间:2023-11-29 20:37:19 25 4
gpt4 key购买 nike

这是我的 JSON:

{  
"A":[
{
"AT":"text"
},
{
"AT":"text2"
}
],
"B":[
{
"name":"text",
"power":10
},
{
"name":"text1",
"power":20
},
{
"name":"text2",
"power":40
}
]
}

我想让所有 B 元素都与 A 元素同名。所以在这种情况下,结果将是 ['text',10,'text2',40]。我试试这个查询 [.B[] | [.名称,.power][]] | map(in([.A[].AT]))但它不起作用,它抛出一个错误:

jq: error (at :23): Cannot index string with string "A" exit status 5

我不知道如何修复它,但我认为它与父节点有关,它无法识别 in 函数中的嵌套查询。那么是否可以用这种语言进行嵌套查询,以及如何处理其他情况(如其他函数或管道等其他情况)的嵌套查询问题?

PS: 我在 JAVASCRIPT (node.js) 工作

新问题,我有这个查询:( .Move | map({(.name): {accuracy: .url.accuracy, damage_class: .url.damage_class.name, power: .url.power, priority: .url.priority, target: .url .target.name, type: .url.type.name, null}}) | 添加 ) as $b | .结果 |选择(.name==“bulba”)| map (.url.moves[].move.name | [., $b[.][]])|添加

它在没有 select(.name=="bulba")

的情况下也能完美工作

jq: error (at :158): Cannot index array with string "name"

我应该用这个显示 JSON 吗?(因为它比前一个大一点)但它是从这个开始的:

    {  
"results":[
{
"name":"bulba",
"url":{
"moves":[
{
"move":{
"name":"flamiche"
}
}
]
}
},
{
"name":"sala",
"url":{
"moves":[
{
"move":{
"name":"DAMSSSS"
}
}
]
}
}
],
"Move":[
{
"name":"flamiche",
"url":{
"accuracy":50,
"damage_class":{
"name":"physical"
},
"power":50,
"priority":0,
"target":{
"name":"foe"
},
"type":{
"name":"fire"
}
}
},
{
"name":"DAMSSSS",
"url":{
"accuracy":90,
"damage_class":{
"name":"status"
},
"power":null,
"priority":2,
"target":{
"name":"self"
},
"type":{
"name":"grass"
}
}
}
]
}

最佳答案

你正在管道 [.B[] | [.name , .power][]] 的产品——这是一个 strings 数组——到 map(in([.A[]. AT])),即输入改变了,.A 丢失了,你正试图从那些 字符串。这不是唯一的问题,而是您收到该错误的原因。你最好做这样的事情:

( .B | map({(.name): .power}) | add ) as $b
| .A | map(.AT | [., $b[.]]) | add

如果使用 reduce 您的输入太大,您可以获得更好的性能:

( reduce .B[] as $b ({}; . + ($b | {(.name): .power})) ) as $b
| reduce .A[].AT as $a ([]; . + [$a, $b[$a]])

关于你的第二个问题,通过将对象数组 results 传递给 select(.name=="bulba"),如错误消息所述'正试图用一个字符串索引一个数组。要过滤 results 下的对象,请将 select 移动到 map 中,例如:

map(select(.name == "bulba") | .url.moves[].move.name | [., $b[.][]])

关于javascript - 是否可以使用 JSON 对象在 jq 中进行嵌套查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56441926/

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