You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Bash数组转换为指定格式的JSON并写入文件?

问题

我有一个Bash数组:

my_strings=("hello" "world")

目前我能通过以下命令将其转换为JSON并写入文件:

for f in "${my_strings[@]}"; do printf '%s' "$f" | jq -R -s .; done | jq -s >> test_.json

生成的文件内容为:

[
  "hello",
  "world"
]

但我期望的输出格式是:

{
    "strings_":
    [
        "hello",
        "world"
    ]
 }

我尝试通过拼接字符的方式实现,但生成的缩进效果不佳,请问有没有更优的实现方法?

解决方案

可以简化命令,无需循环处理每个元素,直接用jq一次性完成结构封装,既高效又能保证标准的JSON缩进格式:

printf '%s\n' "${my_strings[@]}" | jq -R . | jq -s '{strings_: .}' > test_.json

命令说明

  • printf '%s\n' "${my_strings[@]}":将数组每个元素按行输出,确保每个字符串作为独立输入行传递给jq
  • jq -R .:把每一行的原始字符串转换为合法的JSON字符串
  • jq -s '{strings_: .}':将所有JSON字符串收集为数组,再封装到指定键strings_的对象中,jq会自动处理标准缩进格式

执行后生成的test_.json内容会完全符合你期望的格式,同时避免了手动拼接字符带来的格式问题。

内容的提问来源于stack exchange,提问作者roschach

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:07:06