如何跨多行转储json空值?

时间:2017-03-25 00:29:19

标签: python json

screenshot of desired formatting change

所以我试图修改一些json文件,我希望与自己的风格保持一致。我设法处理键,分隔符等的顺序,但是我不能在几行上打印空列表(参见上面的差异图像)。

这是我为此任务提供的代码段。

@var = 'Search'
if var.downcase.include? 'sea'
  #action
end

我考虑过使用info = json.load(f, object_pairs_hook=OrderedDict) # make some changes in info f.seek(0) f.write(json.dumps(info, separators=(',', ': '), indent=4)) f.truncate() 的解决方法,但它有点脏(并且对于嵌套的东西不正确)。有更好的方法吗? (或者我在json模块中遗漏了什么?)

2 个答案:

答案 0 :(得分:1)

您可以通过向每个空列表添加特殊字符串来更新数据。然后你可能会得到一个包含这个文件的文件:

"configs": [
    "MAGIC_VALUE_NOBODY_USES"
],

然后删除包含“MAGIC_VALUE_NOBODY_USES”的行。

答案 1 :(得分:1)

您可以自己修改json模块,只需更改json / encoder.py。

函数_make_iterencode是输出的关键,修改本地函数_iterencode_list

def _iterencode_list(lst, _current_indent_level):
    if not lst:
        if _indent is not None:
            yield '[' + '\n' + (' ' * (_indent * _current_indent_level)) + ']'
        else:
            yield '[]'
        return
    # ...