在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" }