【问题标题】:Convert String to JSON in bash在 bash 中将字符串转换为 JSON
【发布时间】:2020-04-10 01:17:47
【问题描述】:

我有一个格式为长字符串(无换行符)的字符串,如下所示:

<NAME1>ID1>CODE1a>CODE1b>><NAME2>ID2>CODE2a>CODE2b>><NAME3>ID3>CODE3a>CODE3b>>

想法是将此字符串转换为 JSON:

{
  "ID1": [
    "NAME1",
    "CODE1a",
    "CODE1b"
  ],
  "ID2": [
    "NAME2",
    "CODE2a",
    "CODE2b"
  ],
  "ID3": [
    "NAME3",
    "CODE3a",
    "CODE3b"
  ]
}

问题是我需要一个命令(类似于cat testfile.txt | sed "..." | tr "..."

我尝试使用sedtrjq,但没有成功,我完全陷入困境。 提前致谢

【问题讨论】:

    标签: json bash sh jq


    【解决方案1】:

    整个事情都可以用jq来完成,例如:

    jq -R '
      sub("^<";"")
      | split(">><")
      | map(split(">"))
      | map( { (.[1]) : (.[0:1] + (.[2:] | map(select(.!="")))) } )
      | add
    '
    

    【讨论】:

    • 出现错误:tio.run/…
    • 对不起 - 有一个错字。固定。
    • 完美!我会接受这个作为答案,因为它只使用 jq,尽管另一个也可以完成这项工作!只有一个问题,如何使用 split 函数以及为什么(错误地)有两个 args?
    • split(STRING) 在 STRING 处拆分输入字符串,生成一个数组。 (有关splitsplits 之间的区别,请参阅手册。)至于错字——我开发的原始版本调用了gsub(_;_),但我错误地编辑了它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多