Python 更改Json数据,获取TypeError

Python 更改Json数据,获取TypeError,python,json,dictionary,typeerror,Python,Json,Dictionary,Typeerror,编辑:原来我的全部问题是我的Json以前已经被转换成字典了,我没有意识到。我错误地使用了json.dumps而不是.loads 原始问题:我有一段Json代码,我已经变成了一本字典。我正在从服务器检索此Json。当我尝试访问新字典的内部值以更改值时,我得到: TypeError: string indices must be integers, not str 这是我的代码: corner_data = json.dumps(r.json()) print corner_data corn

编辑:原来我的全部问题是我的Json以前已经被转换成字典了,我没有意识到。我错误地使用了json.dumps而不是.loads

原始问题:我有一段Json代码,我已经变成了一本字典。我正在从服务器检索此Json。当我尝试访问新字典的内部值以更改值时,我得到:

TypeError: string indices must be integers, not str
这是我的代码:

corner_data = json.dumps(r.json())

print corner_data

corner_data["geometry"]["corners"] = '{"bottom_right": {"y": "575.531616", "x": "690.547363"}, "top_left": {"y": "-146.739075", "x": "-109.105957"}}'

使用JSON.loads not dumps!将JSON字符串转换为Python dict:*

修改数据,指定Python dict而不是字符串!:

corner_data['geometry']['corners'] = {'bottom_right': {'y': '575.531616', 'x': '690.547363'}, 'top_left': {'y': '-146.739075', 'x': '-109.105957'}}
将其全部重新编码为JSON:

print json.dumps(corner_data)

*这里我假设r.json返回一个字符串。完全有可能r.json已经解码了一个json字符串并返回一个dict,这取决于r是什么。如果是这种情况,您不需要在这里加载json.loads,您可以忽略它。

obj['key']['key']['key']='foobar'。。。!?假设您已将JSON解码为dict obj。JSON数据是多层的。我需要访问和内部层,并将一部分更改为另一部分JSON,这意味着您正在访问列表中的一个元素。Python中的JSON对象是字典,但它可以将列表作为内部值,所以您需要考虑这一点。您需要的是加载,而不是转储。另外,如果您已经有了一些有问题的代码,请发布该代码并询问相关问题。对于组织a:`TypeError:expected string或buffer`Th是我从服务器{u'status':u'S',u'vendor':1,u'name':u'test',u'created':u'2015-07-10T14:06:12.707759Z',u'geometry':{u'corners':None,u'photo':1085,u'id':749,u'room':{u'Vaninging\u points':[{u'y':u'8152.308',u'x':u'537.9231'},{u'y':u'241.1388',u'x':u'4747.204'},{u'y':u'256.0742',u'x':u'271.5687'}},u'image''u name':u'd17efc0e-ddad-45ca-8bbf-59f7267e0d62.原始图像',u'region''u图像':无,u'image'宽度':1024,u'user':287,u'modified':u'2015-07-10T14:06:13.223489Z',图像,u'id'1088}这不是JSON,这已经是一个解码的Python dict。我的脚注似乎是正确的。所以只需执行corner_data=r.JSON。非常感谢。我的整个问题归结为,我认为来自服务器的JSON实际上是一个Python dict。提示:打印typecorner_数据
print json.dumps(corner_data)