在 Python 中使用换行符序列化 JSON 文件
我有时使用 json 和 jsonpickle 将对象序列化为文件,使用以下函数:
def json_serialize(obj, filename, use_jsonpickle=True):
f = open(filename, 'w')
if use_jsonpickle:
import jsonpickle
json_obj = jsonpickle.encode(obj)
f.write(json_obj)
else:
simplejson.dump(obj, f)
f.close()
问题是,如果我序列化字典,例如使用“json_serialize(mydict, myfilename)”,那么整个序列化就会放在一行上。这意味着我无法像 CSV 文件一样对文件进行 grep 手动检查条目。有没有办法将对象的每个元素(例如字典中的每个条目或列表中的每个元素)放置在 JSON 输出文件中的单独行上?
谢谢。
I am using json and jsonpickle sometimes to serialize objects to files, using the following function:
def json_serialize(obj, filename, use_jsonpickle=True):
f = open(filename, 'w')
if use_jsonpickle:
import jsonpickle
json_obj = jsonpickle.encode(obj)
f.write(json_obj)
else:
simplejson.dump(obj, f)
f.close()
The problem is that if I serialize a dictionary for example, using "json_serialize(mydict, myfilename)" then the entire serialization gets put on one line. This means that I can't grep the file for entries to be inspected by hand, like I would a CSV file. Is there a way to make it so each element of an object (e.g. each entry in a dict, or each element in a list) is placed on a separate line in the JSON output file?
thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Jsonpickle 使用 json 后端之一,因此您可以在代码中尝试此操作:
更新:simplejson 已合并到基本 python 中,只需将
simplejson
替换为json
即可获取漂亮打印/格式化/非缩小的 jsonJsonpickle uses one of the json backends and so you can try this to your code:
Update: simplejson has been incorporated into base python, just replace
simplejson
forjson
and you'll get the pretty-printed/formatted/non-minified json(simple)json.dump()
有indent
参数。jsonpickle
可能有类似的东西,或者在最坏的情况下你可以解码它并再次编码。(simple)json.dump()
has theindent
argument.jsonpickle
probably has something similar, or in the worst case you can decode it and encode it again.