Python 更新json对象中的数组

Python 更新json对象中的数组,python,arrays,json,Python,Arrays,Json,试图更新json对象中的数组。这是我的json对象 { "api.version": "v1", "source": { "thirdPartyRef": { "resources": [{ "serviceType": "AwsElbBucket", "path": { "pathExpression": "songs/*"

试图更新json对象中的数组。这是我的json对象

   {
    "api.version": "v1",
    "source": {
        "thirdPartyRef": {
            "resources": [{
                "serviceType": "AwsElbBucket",
                "path": {
                    "pathExpression": "songs/*"
                },
                "authentication": {
                    "type": "S3BucketAuthentication"
                }
            }]
        }
    }
  }
读取json并更新awsId的代码。我的要求是在认证部分添加aws凭据

一旦程序成功运行,它应该是

       "authentication": {
          "type": "S3BucketAuthentication",
          "awsId": "AKIAXXXXX",
          "awsKey": "MYHSHSYjusXXX"
       }
下面是我的代码片段args[5]是jsonfile

with open(args[5]) as json_data:
        source = json.loads(json_data.read())
#       source['source']['category']['awsID'] = "test"
source.update( {"awsId" : "AKIAXXXXX", "awsKey": "HHSJSHS"})
print source
输出:

{u'api.version': u'v1', 'awsKey': 'HHSJSHS', 'awsId': 'AKIAXXXXX', u'source': {u'thirdPartyRef': {u'resources': [{u'path': {u'pathExpression': u'songs/*'}, u'serviceType': u'AwsElbBucket', u'authentication': {u'type': u'S3BucketAuthentication'}}]}}}

我尝试了
source.update(“source”:{“awsId”:“akiaxxx”,“awsKey”:“hhsjsh”}})
,它覆盖了json的其余部分。

要更新的数据结构埋藏得相当深。您无法从最顶层访问它

试试这个:

import json
with open('arg5.json') as json_data:
        source = json.loads(json_data.read())
print source
source["source"]["thirdPartyRef"]["resources"][0]["authentication"].update(
    {"awsId" : "AKIAXXXXX", "awsKey": "HHSJSHS"})

您要更新的数据结构被隐藏得相当深。您无法从最顶层访问它

试试这个:

import json
with open('arg5.json') as json_data:
        source = json.loads(json_data.read())
print source
source["source"]["thirdPartyRef"]["resources"][0]["authentication"].update(
    {"awsId" : "AKIAXXXXX", "awsKey": "HHSJSHS"})