如何用Shell工具将JSON中的非字符串键转换为字符串键
解决方法:将非标准JSON转为标准格式(键转为字符串)
方法1:使用jq默认解析(简单场景)
直接用jq读取文件并输出标准JSON即可,jq会自动将数字类型的键转换为字符串形式:
jq . foo.txt
执行后输出的标准JSON为:
{ "methods": { "0": "GET" } }
方法2:递归处理所有层级的键(复杂嵌套场景)
如果你的JSON存在多层嵌套对象,需要确保所有层级的键都转为字符串,可以用walk和with_entries组合处理:
jq 'walk(if type == "object" then with_entries(.key |= tostring) else . end)' foo.txt
这个命令会遍历JSON的所有节点,只要是对象类型,就将其所有键转为字符串,其他类型节点保持原样。
内容的提问来源于stack exchange,提问作者bcsta
相关产品推荐
相关产品推荐

