所以我试图修改一些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模块中遗漏了什么?)
答案 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
# ...