如何使用jq对单引号的JSON文件进行漂白

时间:2018-01-18 03:19:58

标签: json jq pretty-print jsonlint

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

1 个答案:

答案 0 :(得分:0)

  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 FAQ(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"
      }
    }