json - 如何将简单的 JSON 转换为 DynamoDB JSON?
问题描述
我有一个简单的 JSON,想将其转换为 DynamoDB JSON。有什么简单的方法可以做到这一点吗?
解决方案
如果你JsonString
愿意Dynamodb Map
,你可以使用boto3
. 这是示例。
import boto3
import json
json_string = '{"key1": 1, "key2": "value"}'
json_obj = json.loads(json_string)
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('test-table')
table.put_item(Item={'pk': 'pk-value', 'map': json_obj})
如果您只想更新 whileMap
属性,您可以使用与 .json 相同的 JSON 格式put_item
。
json_string = '{"key1": 2, "key2": "value2"}'
json_obj = json.loads(json_string2)
rsp = table.update_item(
Key={'pk': 'pk-value'},
AttributeUpdates={'map': {'Value': json_obj2, 'Action': 'PUT'}}
)
但是,如果您只想更新特定的嵌套属性,则需要使用UpdateExpression
. 例如,下面是仅key1
将属性更新为“value3”的代码。
nested_json_string = '{"nested": "key3"}'
nested_json_obj = json.loads(nested_json_string)
rsp = table.update_item(
Key={'pk': 'pk-value'},
UpdateExpression='SET #map.#key1 = :val3',
ExpressionAttributeNames={'#map': 'map', '#key1': 'key1'},
ExpressionAttributeValues={':val3': nested_json_obj}
)