【问题标题】:Adding json array via JQ introduces unicode characters in string通过 JQ 添加 json 数组在字符串中引入 unicode 字符
【发布时间】:2018-11-22 22:15:13
【问题描述】:

我有一个 JSON 文件,我想在其中附加一个数组元素,使用 bash 和安装的最新 JQ。我可以附加它,但结果字符串具有 unicode 字符,如下所示。验证器数组中的第一个元素是原始的,第二个是附加的代码。 (不是整个 json 文件)

"validators": [
{
  "address": "85BAF568E7F89277E47D3FC8E111775A4F6992FA",
  "pub_key": {
    "type": "tendermint/PubKeyEd25519",
    "value": "BCzCLcW7rZ9VJgAtEUoDN17qcZw8ZvpYbPsL6eOy3No="
  },
  "power": "10",
  "name": ""
},
{
  "address": "\u001b[32m\"F75E15A3949824B685A3C5BFCDEED7E3DA4277AE\"\u001b[0m\r",
  "pub_key": "\u001b[37m{\u001b[0m\u001b[34;1m\"type\"\u001b[0m\u001b[37m:\u001b[0m\u001b[32m\"tendermint/PubKeyEd25519\"\u001b[0m\u001b[37m,\u001b[0m\u001b[34;1m\"value\"\u001b[0m\u001b[37m:\u001b[0m\u001b[32m\"INeR51z41k6jPAEJ5rV+1TY+4sxnbIykc4bfJFmSCQ8=\"\u001b[0m\u001b[37m\u001b[37m}\u001b[0m\r",
  "power": "10",
  "name": "node2"
}
]

打印地址元素单独打印没有任何 utf/unicode 编码字符的元素。

{
    "type": "tendermint/PubKeyEd25519",
    "value": "BCzCLcW7rZ9VJgAtEUoDN17qcZw8ZvpYbPsL6eOy3No="
}

我使用以下代码合并代码:

cat genesis.json.src | jq --arg pub_key $PK --arg name node$i --arg addr $ADDR '.validators+= [{address: $addr, pub_key: $pub_key, power:"10",name:$name}]' > genesis.json.dest

我正在运行 macOS。任何帮助或建议将不胜感激。

【问题讨论】:

  • 代码看起来像 ANSI 颜色序列,而不是 unicode 字符。
  • 是的,你完全正确。以前从不知道他们。使用“jq -M”选项删除颜色序列,效果很好。

标签: json bash unicode jq


【解决方案1】:

正如评论中提到的@choroba,这是颜色序列字符。我通过为 JQ 添加禁用颜色的 -M 标志来删除它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-23
    • 2016-04-05
    • 2011-12-25
    • 2022-09-22
    • 2022-07-04
    • 1970-01-01
    相关资源
    最近更新 更多