gpt4 book ai didi

json - docker 和 json 格式

转载 作者:行者123 更新时间:2023-12-02 18:10:39 31 4
gpt4 key购买 nike

我正在尝试从 docker 中获取可用的 json cli,但是它似乎只会为单个项目生成 json,而不是整个结果。

例如,运行 docker container ls -a --format="{{ json .Names }}"产生:

"hopeful_payne"
"trusting_turing"
"stupefied_morse"
"unruffled_noyce"
"pensive_fermi"
"objective_neumann"
"confident_bhaskara"
"unruffled_cray"
"epic_newton"
"boring_bartik"
"priceless_sinoussi"
"naughty_grothendieck"
"hardcore_bose"
"sad_jones"
"optimistic_napier"
"trusting_stallman"
"xenodochial_dijkstra"
"pedantic_cocks"

以上不是json。

我怎样才能产生一个理想的结果,即一个 json 数组?

最佳答案

我认为你不能只使用 docker 来做到这一点。

命令行的 format函数有效地获取每个输入行(每个容器一个)并将 Go 模板应用于它。因此,您需要另一个工具将这些行聚合到一个 JSON 数组中。

实现目标的一种方法是使用出色的 jq 工具:

docker container ls --format="{\"name\":\"{{.Names}}\"}" --all | jq --slurp

这会将每个容器行生成为 JSON 字符串: {"name": "[VALUE]"}然后使用 jq将它们放入一个 JSON 数组中。

直接在 bash 中执行此操作的一个挑战是 JSON 的限制,即列表中的最后一个元素不能以 , 结尾。 .因此,以下简单的 bash 脚本生成无效的 JSON,您需要额外的逻辑来删除它(或者更好的是,不要添加最后一个):

echo "[$(for CONTAINER in $(docker container ls --format="{{.Names}}" --all); do echo "{\"name\":\"${CONTAINER}\"},"; done;)]"

关于json - docker 和 json 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55583208/

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