如何在 python 中连接两个 json

How do I concat two jsons in python

我试图将数组 json 的列表放入 json 数组之一,但我的尝试没有按照我想要的方式工作。这是我的尝试。

import json
import uuid
from datetime import datetime

accountIds = [12345,56789]
members= {"L": []}
for accountId in accountIds:
    members["L"].append({"M": {"memberType": {"S": "account"}}},
    {"M": {"memberId": {"S": accountId}}},
    {"M": {"history": {"L": [
    {"M": {"startDate": ""}},
    {"M": {"endDate": ""}}]}}})

    
group = {
    "pk": {"S": str(uuid.uuid4())},
    "pkType": {"S": "pk"},
    "client": {"S": '123'},
    "groupName": {"S": 'abc'},
    "createdDate": {"S": datetime.today().isoformat()},
    "modifiedDate": {"S": datetime.today().isoformat()},
    "status": {"S": "active"},
    "Members": {"L": [members]}
        }
print(json.dumps(group));

这是我想要的结果。

{
   "pk":{
      "S":"9c1fbd69-274f-4b9e-be30-3f8f9a00e0ac"
   },
   "pkType":{
      "S":"pk"
   },
   "client":{
      "S":"123"
   },
   "groupName":{
      "S":"abc"
   },
   "createdDate":{
      "S":"2021-05-17T10:06:22.622634"
   },
   "modifiedDate":{
      "S":"2021-05-17T10:06:22.622668"
   },
   "status":{
      "S":"active"
   },
   "Members":{
      "L":[{
         {
            "M":{
               "memberType":{
                  "S":"account"
               }
            }
         },
         {
            "M":{
               "memberId":{
                  "S":"12345"
               }
            }
         },
         {
            "M":{
               "history":{
                  "L":[
                     {
                        "M":{
                           "startDate":""
                        }
                     },
                     {
                        "M":{
                           "endDate":""
                        }
                     }
                  ]
               }
            }
         }},
         {
         {
            "M":{
               "memberType":{
                  "S":"account"
               }
            }
         },
         {
            "M":{
               "memberId":{
                  "S":"6789"
               }
            }
         },
         {
            "M":{
               "history":{
                  "L":[
                     {
                        "M":{
                           "startDate":""
                        }
                     },
                     {
                        "M":{
                           "endDate":""
                        }
                     }
                  ]
               }
            }
         }}
      ]
   }
}

请注意Members 下面算作数组中的一个对象 {{ “男”:{ “成员类型”:{ “S”:“帐户” } } }, { “男”:{ “会员ID”: { "S": 账号 } } }, { “男”:{ “历史”: { “大号”:[ { “男”:{ “开始日期”: ”” } }, { “男”:{ “结束日期”: ”” } } ] } } }}

先合并两个字典,然后将合并后的字典转储到json,怎么样?我们可以像下面这样合并两个字典:

merged_dict = {**dict1, **dict2}

示例:

import json

a = {
    "A": 1,
    "B": 2,
    "C": 3
}

b = {
    "D": 4,
    "E": 5
}

c = {**a, **b}

print(json.dumps(c))

它打印

{"A": 1, "B": 2, "C": 3, "D": 4, "E": 5}

更新

在评论中提到的这种特殊情况下,我们实际上不需要合并两个词典。将 "Members": {"L": [members]} 更改为 "Members": members 应该可以解决问题。然而,准确的格式是不可能实现的,因为我们正在尝试序列化 SetSerialising 集合在 json 中是不可能的,它会抛出一个错误。所以我们最好的选择是一个列表。修改后的代码如下。

import json
import uuid
from datetime import datetime

accountIds = [12345, 56789]
members = {"L": []}
for accountId in accountIds:
    members["L"].append([{"M": {"memberType": {"S": "account"}}}, #Added square bracket to make it a list
                        {"M": {"memberId": {"S": accountId}}},
                        {"M": {"history": {"L": [
                            {"M": {"startDate": ""}},
                            {"M": {"endDate": ""}}]}}}])

group = {
    "pk": {"S": str(uuid.uuid4())},
    "pkType": {"S": "pk"},
    "client": {"S": '123'},
    "groupName": {"S": 'abc'},
    "createdDate": {"S": datetime.today().isoformat()},
    "modifiedDate": {"S": datetime.today().isoformat()},
    "status": {"S": "active"},
    "Members": members} # modified from "Members": {"L": [members]}
print(json.dumps(group));

它打印

{
    "pk": {
        "S": "814c2fb9-8afd-499c-b98a-592b53bb9ca5"
    },
    "pkType": {
        "S": "pk"
    },
    "client": {
        "S": "123"
    },
    "groupName": {
        "S": "abc"
    },
    "createdDate": {
        "S": "2021-05-17T18:35:04.388906"
    },
    "modifiedDate": {
        "S": "2021-05-17T18:35:04.388906"
    },
    "status": {
        "S": "active"
    },
    "Members": {
        "L": [
            [
                {
                    "M": {
                        "memberType": {
                            "S": "account"
                        }
                    }
                },
                {
                    "M": {
                        "memberId": {
                            "S": 12345
                        }
                    }
                },
                {
                    "M": {
                        "history": {
                            "L": [
                                {
                                    "M": {
                                        "startDate": ""
                                    }
                                },
                                {
                                    "M": {
                                        "endDate": ""
                                    }
                                }
                            ]
                        }
                    }
                }
            ],
            [
                {
                    "M": {
                        "memberType": {
                            "S": "account"
                        }
                    }
                },
                {
                    "M": {
                        "memberId": {
                            "S": 56789
                        }
                    }
                },
                {
                    "M": {
                        "history": {
                            "L": [
                                {
                                    "M": {
                                        "startDate": ""
                                    }
                                },
                                {
                                    "M": {
                                        "endDate": ""
                                    }
                                }
                            ]
                        }
                    }
                }
            ]
        ]
    }
}

我们可以通过迭代 group["Members"]["L"] 来访问问题中提到的单个对象,如下所示:

for item in group["Members"]["L"]:
    print(item)

它打印

[{'M': {'memberType': {'S': 'account'}}}, {'M': {'memberId': {'S': 12345}}}, {'M': {'history': {'L': [{'M': {'startDate': ''}}, {'M': {'endDate': ''}}]}}}]
[{'M': {'memberType': {'S': 'account'}}}, {'M': {'memberId': {'S': 56789}}}, {'M': {'history': {'L': [{'M': {'startDate': ''}}, {'M': {'endDate': ''}}]}}}]

希望对您有所帮助。