如何在不进行语法检查的情况下美化json文件?

时间:2018-11-16 03:09:48

标签: json

我想美化json文件,只是为了使外观清晰,我只想获得正确的缩进行,但是我用Google搜索的工具都需要进行语法检查,并且所有人都会抱怨它具有非法语法,例如单引号或未定义财产有没有只做beautyfy并且没有语法检查的工具?

下面的测试json:

[{$group:{_id:{year:{$year:'$registerTime'},month:{$month:'$registerTime'},day:{$dayOfMonth:'$registerTime'}},sources:{$push:{platform:'$registerSource'}}}},{$group:{_id:{date:'$_id'}}}]

我想得到如下结果:

[
{
    $group: {
        _id: {
            year: {
                $year: '$registerTime'
            },
            month: {
                $month: '$registerTime'
            },
            day: {
                $dayOfMonth: '$registerTime'
            }
        },
        sources: {
            $push: {
                platform: '$registerSource'
            }
        }
    }
},
{
    $group: {
        _id: {
            date: '$_id'
        }
    }
}
]

2 个答案:

答案 0 :(得分:1)

您可以通过正确引用内容来整理字符串:

  1. 用双引号替换单引号
  2. 用带引号的单词替换单词
  3. 用双引号替换结果重复的双引号

假设data是您的字符串:

import re, json
data1 = data.replace("'", '"')
data2 = re.sub(r'([\w$]+)', r'"\1"', data1)
data3 = data2.replace('""', '"')
legally_formatted = json.loads(data3)
# [{'$group': {'_id': {'year': {'$year': '$registerTime'}, 
# 'month': {'$month': '$registerTime'}, 
# 'day': {'$dayOfMonth': '$registerTime'}}, 
# 'sources': {'$push': {'platform': '$registerSource'}}}}, 
# {'$group': {'_id': {'date': '$_id'}}}]

一旦您获得了合法格式的数据,就可以用自己喜欢的方式打印出来。

答案 1 :(得分:0)

这里...有很多选择 JS beautifier