在Python中parsingJSON

我的项目目前正在接收python的JSON消息,我需要从中获取信息的位。 对于这个目的,让我们把它设置为一个简单的string中的JSON:

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

到目前为止,我一直使用列表生成JSON请求,然后json.dumps但做相反的,我想我需要使用json.loads但我没有太多运气。 任何人都可以给我一个片段,在上面的例子中input“two”会返回“2”吗?

很简单:

 import json j = json.loads('{"one" : "1", "two" : "2", "three" : "3"}') print j['two'] 

有时候你的json不是一个string。 例如,如果你从这样的url获得一个JSON:

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

你将需要使用json.load,而不是json.loads:

 j_obj = json.load(j) 

(很容易忘记:'s'是'串')

对于URL或文件,使用json.load()。 对于具有.json内容的string,请使用json.loads()。

 #! /usr/bin/python import json from pprint import pprint #json_file='a.json' json_file='my_cube.json' cube='1' json_data=open(json_file) data = json.load(json_data) #pprint(data) json_data.close() 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"} 

请注意,您可以将转储的ident参数设置为像这样打印(例如,在使用print json.dumps(data,indent = 4)时):

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