Python:将[str]类型的Json数据转换为[dict]类型

时间:2015-11-16 05:19:37

标签: python json

import json

data1 = {'b': 789, 'c': 456, 'a': 123}

encode_line = json.dumps(data1)
decode_json = json.loads(encode_line)

print type(encode_line)
print type(decode_line)

类型(decode_line)是[dict],但是当我们将data1保存到txt文件中时,使用下面的脚本读取它:

file = open('test.txt','r')
for line in file:
    encode_line = json.dumps(line)
    decode_line = json.loads(encode_line)

    print type(encode_line)
    print type(decode_line)

现在,类型(decode_line)是[unicode]。为什么?

我想从txt文件中读取数据,然后从dict类型中检索信息。我该怎么办?

谢谢!

2 个答案:

答案 0 :(得分:0)

你好!

这应该可以解决问题:

import json;

def readJSON(filename):
    "Reads JSON file, returns correspoding dict.";
    with open(filename) as f:
        return json.loads(f.read());

工作原理:

json.dumps(.)将Python dict转换为JSON字符串 json.loads(.)将JSON字符串转换为Python dict。

在您的密码中,您拨打json.dumps(line),但line是一个字符串!
要使json.dumps(.)正常工作,您必须提供Python字典,而不是字符串。

在此上下文中,dumps被读作“dump-s”,“s”表示字符串。它需要一个dict并转储(即返回)它的字符串表示。同样,loads被读作“load-s”。它加载(即接受)一个JSON字符串并返回它的相应字典。

希望这会有所帮助。

答案 1 :(得分:0)

删除以下行

  

encode_line = json.dumps(line)

来自第二个片段(您正在从文件中读取)

file = open('test.txt','r')
for line in file:
    decode_line = json.loads(line)
    print type(line)
    print type(decode_line)

请参阅https://docs.python.org/2/library/json.html