如何使用 jq 漂亮打印单引号 JSON 文件

how to prettyprint a single-quoted JSON file using jq

{ 'abc': { 'name': 'John', 'address': 'USA' }, 'xyz': { 'name' : 'Robert', 'address': 'Canada' } }

  1. 样本无效JSON。

  2. jq 可用于漂亮打印有效 JSON,但有一些重要的注意事项,主要是关于数字。例如:

    $ jq . <<< '{ "abc": { "name": "John", "address": "USA" }, "xyz": { "name": "Robert", "address": "Canada" } }'  
    {
      "abc": {
        "name": "John",
        "address": "USA"
      },
      "xyz": {
        "name": "Robert",
        "address": "Canada"
      }
    }
    
  3. 有关将不太有效的 JSON 转换为 JSON 的信息,请参阅 jq FAQ -- 搜索 not-quite-valid

  4. jq 常见问题解答(jsonlint)中上面引用的部分中至少提到的一种工具不仅会将单引号准JSON转换为JSON , 还可以漂亮地打印它。

  5. 在您给出的示例中,您可以将 sed 甚至 tr 与 jq 结合使用:

    echo "{ 'abc': { 'name': 'John', 'address': 'USA' }, 'xyz': { 'name': 'Robert', 'address': 'Canada' } }" |
      tr "'" '"' | jq .
    {
      "abc": {
        "name": "John",
        "address": "USA"
      },
      "xyz": {
        "name": "Robert",
        "address": "Canada"
      }
    }