如何在 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
应该可以解决问题。然而,准确的格式是不可能实现的,因为我们正在尝试序列化 Set
。 Serialising
集合在 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': ''}}]}}}]
希望对您有所帮助。
我试图将数组 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
应该可以解决问题。然而,准确的格式是不可能实现的,因为我们正在尝试序列化 Set
。 Serialising
集合在 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': ''}}]}}}]
希望对您有所帮助。