如何解析JSON格式的数据

我的项目目前正在python中接收一个JSON消息,我需要从中获得一些信息。为此,让我们将其设置为字符串中的一些简单JSON:

jsonStr = '{"one" : "1", "two" : "2", "three" : "3"}'

到目前为止,我一直使用列表生成JSON请求,然后使用json.dumps,但要做相反的事情,我认为我需要使用json.loads。然而,我的运气不太好。谁能给我提供一个代码片段,在上面的例子中返回"2"的输入"two" ?

593644 次浏览

非常简单:

import json
data = json.loads('{"one" : "1", "two" : "2", "three" : "3"}')
print(data['two'])  # or `print data['two']` in Python 2

有时候json不是字符串。例如,如果你从这样的url中得到一个json:

j = urllib2.urlopen('http://site.com/data.json')

您将需要使用json。Load,而不是json.loads:

j_obj = json.load(j)

(很容易忘记:'s'代表'string')

对于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']

下面是一个简单的例子,可能会对你有所帮助:

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时。dump (data, indent=4)):

{
"pk": 1,
"fb": {
"new_key": "cc.ee was present!",
"fd_id": "12345",
"fc": ""
},
"fa": "cc.ee"
}