gpt4 book ai didi

json - jq 根据属性的现有值修改值

转载 作者:行者123 更新时间:2023-12-05 00:54:27 27 4
gpt4 key购买 nike

我有一个 JSON 对象数组,

[
{
"id": "100006578",
"name": "Someone",
"category": "frontend"
},
{
"id": "100005436",
"name": "Someone",
"category": "backend"
}
]

我想根据现有值替换 id 字段的值。我想使用 id 字段的现有值(100005436)并根据现有值将其替换为新值(200005436)。基本上,我只想替换现有值中字符串的第一个字符。输出应该是这样的

[
{
"id": "200006578",
"name": "Someone",
"category": "frontend"
},
{
"id": "200005436",
"name": "Someone",
"category": "backend"
}
]

我尝试了很多东西。但仍然与jq苦苦挣扎。我尝试过的最近的逻辑选项是增加它 jq '.externalId|map(.id+100000000)' fileWithJsonObject但它不起作用,因为它是一个字符串。

我真的发现很难获得可以采用现有值并仅替换其中特定部分的替代表达式。关于堆栈溢出有很多答案都谈到了根据外部提供的值替换键的值,但我想获取现有值,修改它并替换它。到目前为止,我最近去过的地方如下,但不幸的是,它并不完整:jq '.externalId|to_entries|map(if .id then sub(*regex*; *tostring*))' fileWithJsonObject

我正在寻找一种方法来获得正确的正则表达式,以及如何提供/使用 id 属性的当前值来替代。

最佳答案

replace the first character of the string ...

使用 map 的简洁解决方案:

map(.id |= "2" + .[1:])

或更笼统地说:

map(.id |= (.[0:1]|tonumber+1|tostring) + .[1:])

更简洁:

[].id |= "2" + .[1:]

等等……

关于json - jq 根据属性的现有值修改值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66324817/

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