What is the difference between json.load() and json.loads() functions
在python中,
我猜load()函数必须与文件对象一起使用(因此我需要使用上下文管理器),而loads()函数将文件的路径作为字符串。这有点令人困惑。
非常感谢你的回答!
是的,
文档是很清晰的:http:/ / / 2 /图书馆/ json.html docs.python.org
1 | json.load(fp[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]]) |
Deserialize fp (a .read()-supporting file-like object containing a
JSON document) to a Python object using this conversion table.
1 | json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]]) |
Deserialize s (a str or unicode instance containing a JSON document)
to a Python object using this conversion table.
这是一
添加一个简单的例子,只是去到什么可能都有,
json.load()
1 2 | with open("json_data.json","r") as content: print(json.load(content)) |
想输出,
1 | {u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}} |
是因为
如果我使用
1 2 | with open("json_data.json","r") as content: print(json.loads(content)) |
我会得到这个错误:
TypeError: expected string or buffer
json.loads()
使用一个
1 2 | with open("json_data.json","r") as content: print(json.loads(content.read())) |
输出
1 | {u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}} |
这是因为
如果我使用一个
1 2 | with open("json_data.json","r") as content: print(json.load(content.read())) |
给,
AttributeError: 'str' object has no attribute 'read'
所以,现在你知道
另一个例子,
1 2 3 | cat json_data.json | ./test.py {u'event': {u'id': u'5206c7e2-da67-42da-9341-6ea403c632c7', u'name': u'Sufiyan Ghori'}} |
如果我想我会做