问题:如何在Python中解析JSON?
我的项目目前正在python中接收JSON消息,我需要从中获取一些信息。为此,我们将其设置为字符串中的一些简单JSON:
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
到目前为止,我一直在使用列表生成JSON请求json.dumps
,但是与此相反,我认为我需要使用json.loads
。但是我没有那么幸运。谁能为我提供一个片段,该片段将在上述示例"2"
的输入中返回"two"
?
回答 0
很简单:
import json
data = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print data['two']
回答 1
有时,您的json不是字符串。例如,如果您从这样的网址获取json:
j = urllib2.urlopen('http://site.com/data.json')
您将需要使用json.load,而不是json.loads:
j_obj = json.load(j)
(很容易忘记:“ s”代表“字符串”)
回答 2
对于URL或文件,请使用json.load()
。对于具有.json内容的字符串,请使用json.loads()
。
#! /usr/bin/python
import json
# from pprint import pprint
json_file = 'my_cube.json'
cube = '1'
with open(json_file) as json_data:
data = json.load(json_data)
# pprint(data)
print "Dimension: ", data['cubes'][cube]['dim']
print "Measures: ", data['cubes'][cube]['meas']
回答 3
以下是可能帮助您的简单示例:
json_string = """
{
"pk": 1,
"fa": "cc.ee",
"fb": {
"fc": "",
"fd_id": "12345"
}
}"""
import json
data = json.loads(json_string)
if data["fa"] == "cc.ee":
data["fb"]["new_key"] = "cc.ee was present!"
print json.dumps(data)
上面代码的输出将是:
{"pk": 1, "fb": {"new_key": "cc.ee was present!", "fd_id": "12345",
"fc": ""}, "fa": "cc.ee"}
请注意,您可以设置dump的ident参数来像这样打印它(例如,当使用print json.dumps(data,indent = 4)时):
{
"pk": 1,
"fb": {
"new_key": "cc.ee was present!",
"fd_id": "12345",
"fc": ""
},
"fa": "cc.ee"
}
回答 4
可以使用json或ast python模块:
Using json :
=============
import json
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
json_data = json.loads(jsonStr)
print(f"json_data: {json_data}")
print(f"json_data['two']: {json_data['two']}")
Output:
json_data: {'one': '1', 'two': '2', 'three': '3'}
json_data['two']: 2
Using ast:
==========
import ast
jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'
json_dict = ast.literal_eval(jsonStr)
print(f"json_dict: {json_dict}")
print(f"json_dict['two']: {json_dict['two']}")
Output:
json_dict: {'one': '1', 'two': '2', 'three': '3'}
json_dict['two']: 2
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。