【发布时间】:2020-06-16 08:01:18
【问题描述】:
我正在尝试映射 json 以将其发送到另一个应用程序,该应用程序期望数据采用自己的格式,我使用的是 AWS Lambda,当触发事件时获取低于 json 的 GET,需要根据应用程序期望什么。但是密钥堆栈太大了,例如“详细信息”中的“ratePlan”中的“rateCode”,有将近 20000 个速率代码,例如“abc”,“xyz”,......这样映射不是一个好主意
if "rateCode" == "abc":
application_two_dict["rate_code"] = 123
所以有更多的键,这些键具有大量的值。映射这些键的最佳方法是什么。这也需要以两种方式发生,例如当我们从应用程序 2 获取数据时,我们需要解析 json 并将键映射到应用程序可以理解的其他方式,反之亦然。
{
"customer": {
"firstName": "john",
"lastName": "doe",
"email": "john.doe@test.com",
"mailingAddress": {
"address1": "123 N 1st st",
"address2": "789",
"countryCode": "USA",
"stateCode": "AZ",
"city": "Phoenix",
"postalCode": "34567"
},
"telephoneNumber": {
"telephoneNumber": "1235456789"
}
},
"paymentAccount": {
"firstName": "john",
"lastName": "doe",
"paymentAccountType": "VA",
"expirationDate": "2021-05-31",
"billingAddress": {
"address1": "1234 N 1st st",
"address2": "435",
"city": "Phoenix",
"countryCode": "USA",
"postalCode": "213445",
"stateCode": "AZ"
}
},
"Details": {
"123": [{
"quantity": 1,
"ratePlan": {
"rateCode": "abc",
"DetailsList": [{
"CategoryCode": "1234",
}]
}
}
}
我还是没有app2 json的确切格式
示例 json
例如
app1 json
{
"Details": {
"123": [{
"quantity": 1,
"ratePlan": {
"rateCode": "abc",
"DetailsList": [{
"CategoryCode": "1234",
}]
}
}
}
}
应用 2 json
{
user_details_code : 123,
quantity : [1],
rate_plan : {
rate_code: "xyz",
category_code : "US_SAN"
}
}
【问题讨论】:
-
方法 1:使用包含 app1 rateCode 值的分区键(例如名为 app1rateCode)创建一个表。将 app2 rateCode 作为名为 app2rateCode 的属性存储在表中。创建一个 GSI 并使用 app2rateCode 属性作为索引的分区键。这样就可以查询
-
方法 2(我更喜欢):创建一个带有分区键(例如名为 rateCode)的表,其中包含 app1 和 app2 rateCode 值和一个排序键(名为 app例如)包含静态值(仅“app1”和“app2”)。然后,您可以将 rateCode 存储在可以命名为 OtherRateCode 的属性中。您可以使用分区键查询 rateCode 并使用排序键指定要从中获取相应代码的应用程序。
标签: json python-3.x aws-lambda