JSON 转储 Python CGI 以尾随点开始

JSON Dump in Python CGI starts with trailing dots

从run_report returns一个python字典返回的数据,然后在其中解析成JSON字符串并打印出来,以便[=25可以访问=]. run_report 函数还创建了一个 .json 文件,我可以稍后访问该文件:

print "Content-type: application/json\n"
json_data = run_report(sites_list, tierOne, dateFrom, dateTo, filename, file_extension)
print json.dumps(json_data, indent=4, sort_keys=True)

然而,当它打印时,我收到这样的输出:

..{
"data": {
    "FR": 1424068
}, 
"tierone": {
    "countries": [
        "US", 
        "BR", 
        ...
    ], 
    "ratio": 100.0, 
    "total": 1424068, 
    "total_countries": 1
}, 
"total": 1424068, 
"total_countries": 1
}

我不明白那些尾随点是如何出现的。但是,如果我打开我使用 run_report 函数创建的 .json 文件之一并打印读取的数据文件,这些点不会出现。

def open_file(file_extension, json_file):
    with open(file_extension + json_file) as data_file:
        data = json.load(data_file)
    return json.dumps(data)

json_data = open_file(file_extension, filename)
    print json_data

某些 else 正在生成那些 . 个字符; json.dumps() 函数从不添加那些。

确保没有其他内容正在写入 sys.stdout;您发送到 sys.stdout 的所有内容都会发送到浏览器(print 默认写入 sys.stdout)。

根据您的评论,我了解到您想将其他信息写入服务器日志;不要为此使用 sys.stdout;改为写入 sys.stderr