Bash:将较低级别的 JSON 转换为转义字符串

hor*_*ria 2 bash jq

我正在努力使用jq按摩输入数据,以便保留第一级键,而较低级别的 JSON 被转换为转义字符串。

输入 JSON:

{
  "a": "1",
  "b": {
    "c": "2",
    "d": {
      "e": "3"
    }
  },
  "f": "4"
}
Run Code Online (Sandbox Code Playgroud)

期望的输出:

{
  "a": "1",
  "b": "{ \"c\": \"2\", \"d\": { \"e\": \"3\"} }",
  "f": "4"
}
Run Code Online (Sandbox Code Playgroud)

有没有“纯粹”的jq解决方案?

Sha*_*awn 5

with_entries并且tostring似乎可以解决问题:

$ jq 'with_entries(.value |= tostring )' example.json                                               
{
  "a": "1",
  "b": "{\"c\":\"2\",\"d\":{\"e\":\"3\"}}",
  "f": "4"
}
Run Code Online (Sandbox Code Playgroud)