1

我有一个用于操作 JSON 文件的小型 python 程序。我发现当我使用 json.dump() 将操作数据转储回 JSON 文件时,它会更改为<type 'NoneType'>. 下面数据的原始类型(类型json_data)是<type 'dict'>。我将这些 JSON 文档存储在 elasticsearch 中并使用 Kibana4 对其进行可视化。Kibana4 将新添加的整数字段视为字符串。有没有人遇到过这个问题。

import json                                                                                                                                                                                    

fname = "json_data.txt"
with open(fname, 'r+') as f:
    json_data = json.load(f)
    print(type(json_data))
    #Code to add fields to json files.   
    f.seek(0)
    x = json.dump(json_data,f,ensure_ascii=True)
    print(type(x))
4

2 回答 2

5

json.dump()没有返回值。它写入文件,不是返回转储的对象。

因此,将返回可调用的默认返回值None

换句话说,您的代码完全按照您的要求执行:读取 JSON 数据并解析它,结果存储在json_data. 然后将该 Python 对象写回文件中。的返回值在json.dump()这里无关紧要,您仍然可以参考json_data.

如果您想要一个包含 JSON 对象的字符串值,请使用json.dumps()(注意s);这将返回结果 JSON 字符串而不写入文件:

fname = "json_data.txt"
with open(fname, 'r') as f:
    json_data = json.load(f)
    print(type(json_data))

json_string = json.dumps(json_data)
print(type(json_string))
于 2015-04-07T21:29:53.487 回答
2

我认为 json.dump() 没有返回值。您是否正在寻找 json.dumps()

于 2015-04-07T21:31:31.327 回答