json.dumps()无效

时间:2014-01-30 09:56:23

标签: json python-2.7

import json

def json_serialize(name, ftype, path):

        prof_info = []

        prof_info.append({
            'profile_name': name,
            'filter_type': ftype
        })

        with open(path, "w") as f:
            json.dumps({'profile_info': prof_info}, f)

json_serialize(profile_name, filter_type, "/home/file.json")

上面的代码不会将数据转储到“file.json”文件中。 当我在print之前写json.dumps()时,数据会在屏幕上打印出来。 但它不会被转储到文件中。

文件被创建但在打开它时(使用记事本),什么都没有。 为什么呢?

如何纠正?

4 个答案:

答案 0 :(得分:6)

这不是json.dumps()的工作原理。 json.dumps()返回一个字符串,然后您必须使用f.write()将其写入文件。像这样:

with open(path, 'w') as f:
    json_str = json.dumps({'profile_info': prof_info})
    f.write(json_str)

或者,只使用json.dump(),它的存在完全是为了将JSON数据转储到文件描述符中。

with open(path, 'w') as f:
    json.dump({'profile_info': prof_info}, f)

答案 1 :(得分:0)

您需要使用json.dumpjson.dumps返回一个字符串,它不会写入文件描述符。

答案 2 :(得分:0)

简单地说,

import json

my_list = range(1,10) # a list from 1 to 10

with open('theJsonFile.json', 'w') as file_descriptor:

         json.dump(my_list, file_descriptor)

答案 3 :(得分:0)

还要检查您的输出文件路径是相对路径。

output_json_path = '../Desktop/test_folder/test.json' #This works
# output_json_path = '~/Desktop/test_folder/test.json' #This does not work
with open(output_json_path, 'w+', encoding='utf8') as f:
    json.dump({l1 : tagging_dictionary}, f, ensure_ascii = False)