如何用JMESPath将扁平JSON键值对拼接为指定格式字符串?
用JMESPath实现键值对按k:v:k:v格式拼接的解决方案
你的需求完全可以用JMESPath实现,之前的表达式问题在于先把所有键和所有值分别收集再拼接,导致顺序不符合预期。正确的思路是先将每个键值对单独拼接成k:v格式的字符串,再把这些字符串用:连接起来。
正确的JMESPath表达式
data | to_entries(@) | map(&join(':', [key, value]), @) | join(':', @)
步骤拆解
to_entries(@):将扁平的data对象转换为条目数组,结构变为:[{"key": "k1", "value": "v1"}, {"key": "k2", "value": "v2"}]map(&join(':', [key, value]), @):遍历每个条目,把每个条目的key和value用:拼接,得到数组:["k1:v1", "k2:v2"]join(':', @):将上述数组中的所有字符串用:连接,最终得到目标格式:"k1:v1:k2:v2"
这个方法支持任意数量的键值对,完全适配你说的“键值对数量不固定”的场景。
内容的提问来源于stack exchange,提问作者SimonE
相关产品推荐
相关产品推荐

