json - 如何使用 jq 递归地将函数应用于记录结构中的所有字符串

标签 json recursion jq

是否可以对记录应用递归转换以返回相同的记录,但映射所有 string 值?

例如:

{"x":"1", "a": {"b": 2, "c": ["a"]}, "d": {"e": "z"}}

应用了“add prime”的映射:

{"x":"1'", "a": {"b": 2, "c": ["a'"]}, "d": {"e": "z'"}}

我尝试过组合使用 recursemapstringselect,但运气不佳。有什么想法吗?

最佳答案

您也可以使用递归运算符轻松地做到这一点:

jq '(.. | strings) += "\'"'

其中 .. 通过递归遍历输入的每个元素生成流,strings 为那些是字符串的流过滤,+= 将右侧元素添加到左侧流中的每个元素,"\'" 是包含您寻找的“质数”的文字。

关于json - 如何使用 jq 递归地将函数应用于记录结构中的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35609548/

相关文章:

javascript - 将 Apollo GraphQL 查询解析为包含和属性字段的 Sequelize 查询

javascript - JavaScript 对象中的深度变化值

arrays - jq:选择列表中的.attribute

ios - 使用 JSON 数组填充 UITableView

c - 需要在C中打印 "(empty string)."的递归printLinkedList函数

json - 如果对应于给定键的值以指定字符串开头,则使用 jq 更新 JSON 文档中的对象

bash - 将select操作的结果输出到一个数组中——jq

json - 如何在Grails中将复杂的域对象解析为JSON对象?

复杂 json 上的 Json.net JObject.Parse 错误

java - 使用 Gson 反序列化 List<T> 对象?