在新行而不是单行上输出 json 对象组

Posted

技术标签:

【中文标题】在新行而不是单行上输出 json 对象组【英文标题】:output group of json objects on new line instead of single line 【发布时间】:2014-03-02 13:55:12 【问题描述】:

我正在加载一个 json 文件并尝试提取一些值,然后逐行输出该组值。

当前输出如下所示:

"time":"1:2:2","post":"1","user":"4","text":"Masaru Emoto""time":"1:3:8","post":"8","user":"5","text":"Meteors""time":"7:4:5","post":"1","user":"8","text":"Olympics"

我希望它看起来像这样:

"time":"1:2:2","post":"1","user":"4","text":"Masaru Emoto"
"time":"1:3:8","post":"8","user":"5","text":"Meteors"
"time":"7:4:5","post":"1","user":"8","text":"Olympics"

我不知道在哪里添加“\n”来修复输出。提前感谢您的帮助。

代码:

import json

json_data = open('somefile.json', 'r+').read().decode("utf-8")
jdata = json.loads(json_data)

def id_generator(d):    

with open('formatted_file' + '.json', 'w') as outfile:
    for k, v in d.items():
        if isinstance(v, dict):
            id_generator(v)                    
        if isinstance(v, list):            
            for post in v:
                formated = "time":post.get('created_time'),"user":post['from']['id'],
                               "post":post.get('id'),"text":post.get('description')                                        
                out = json.dumps(formated, separators=(',', ':'))                                                         
                outfile.write(out)                                        
if __name__ == '__main__':
    try:
        id_generator(jdata)
    except TypeError:
        pass 

【问题讨论】:

outfile.write(out + '\n') ? 我看不出当前输出看起来像这样输出有什么不同。 @JamesThomasMoon1979 我认为有人编辑了它,它最初不会添加换行符,所以输出是单个字符串。 【参考方案1】:

格式有点破坏了你的信息,但我假设你想在每次写电话(每个帖子)后换行。

只需outfile.write(out + '\n')\n 将在给定系统上自动转换为适当的行分隔符。

【讨论】:

成功了!每次我提出问题时,我都会与格式作斗争。感谢您的帮助。

以上是关于在新行而不是单行上输出 json 对象组的主要内容,如果未能解决你的问题,请参考以下文章

Swift - JSON字符串打印\ n而不是新行

php json_encde 转换空对象和空数组 为json格式 而不是[]

JSON 对象必须是 str、bytes 或 bytearray,而不是 dict

Coredata 总是更新行而不是快速插入新行

java中json对象有没有方法可以把null值转换成空字符串

java中json对象有没有方法可以把null值转换成空字符串