Если вы имеете в виду 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})
Если вы просто хотите обновить атрибут while Map
, вы можете использовать только формат 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'}}
)
Однако, если вы хотите обновить только указанный c вложенный атрибут, вам нужно использовать 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}
)