Как конвертировать простой JSON в DynamoDB JSON? - PullRequest
0 голосов
/ 15 января 2020

У меня есть простой JSON и я хочу преобразовать его в DynamoDB JSON. Есть ли простой способ сделать это?

1 Ответ

1 голос
/ 16 января 2020

Если вы имеете в виду 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}
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...