DynamoDB Type Serializer/Deserializer
Simple Example for Value -> AttributeValue
use aws_sdk_dynamodb::types::AttributeValue;
use serde_json::{Value, json};
use dynamodb_marshall::dynamodb;
fn main() {
let input: Value = json!({
"hello": "world",
"n": 42,
"some": {
"deep": {
"value": 42
},
},
});
let value: AttributeValue = dynamodb::marshall(&input);
let original: Value = dynamodb::unmarshall(&value);
assert_eq!(
input,
original
);
}
For struct that derive from Serialize, Deserialize
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use aws_sdk_dynamodb::types::AttributeValue;
use dynamodb_marshall::dynamodb;
#[derive(Serialize, Deserialize, Debug, Default, Eq, PartialEq, Clone)]
struct Example {
hello: String,
world: bool,
something: HashMap<String, String>,
other: u64,
}
fn main() {
let example = Example::default();
let value: AttributeValue = dynamodb::marshall_t(&example).unwrap();
let same_example: Example = dynamodb::unmarshall_t::<Example>(&value).unwrap();
assert_eq!(
example,
same_example,
);
}