aws_sdk_pinpoint/protocol_serde/
shape_segment_dimensions.rs1pub fn ser_segment_dimensions(
3 object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
4 input: &crate::types::SegmentDimensions,
5) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
6 if let Some(var_1) = &input.attributes {
7 #[allow(unused_mut)]
8 let mut object_2 = object.key("Attributes").start_object();
9 for (key_3, value_4) in var_1 {
10 {
11 #[allow(unused_mut)]
12 let mut object_5 = object_2.key(key_3.as_str()).start_object();
13 crate::protocol_serde::shape_attribute_dimension::ser_attribute_dimension(&mut object_5, value_4)?;
14 object_5.finish();
15 }
16 }
17 object_2.finish();
18 }
19 if let Some(var_6) = &input.behavior {
20 #[allow(unused_mut)]
21 let mut object_7 = object.key("Behavior").start_object();
22 crate::protocol_serde::shape_segment_behaviors::ser_segment_behaviors(&mut object_7, var_6)?;
23 object_7.finish();
24 }
25 if let Some(var_8) = &input.demographic {
26 #[allow(unused_mut)]
27 let mut object_9 = object.key("Demographic").start_object();
28 crate::protocol_serde::shape_segment_demographics::ser_segment_demographics(&mut object_9, var_8)?;
29 object_9.finish();
30 }
31 if let Some(var_10) = &input.location {
32 #[allow(unused_mut)]
33 let mut object_11 = object.key("Location").start_object();
34 crate::protocol_serde::shape_segment_location::ser_segment_location(&mut object_11, var_10)?;
35 object_11.finish();
36 }
37 if let Some(var_12) = &input.metrics {
38 #[allow(unused_mut)]
39 let mut object_13 = object.key("Metrics").start_object();
40 for (key_14, value_15) in var_12 {
41 {
42 #[allow(unused_mut)]
43 let mut object_16 = object_13.key(key_14.as_str()).start_object();
44 crate::protocol_serde::shape_metric_dimension::ser_metric_dimension(&mut object_16, value_15)?;
45 object_16.finish();
46 }
47 }
48 object_13.finish();
49 }
50 if let Some(var_17) = &input.user_attributes {
51 #[allow(unused_mut)]
52 let mut object_18 = object.key("UserAttributes").start_object();
53 for (key_19, value_20) in var_17 {
54 {
55 #[allow(unused_mut)]
56 let mut object_21 = object_18.key(key_19.as_str()).start_object();
57 crate::protocol_serde::shape_attribute_dimension::ser_attribute_dimension(&mut object_21, value_20)?;
58 object_21.finish();
59 }
60 }
61 object_18.finish();
62 }
63 Ok(())
64}
65
66pub(crate) fn de_segment_dimensions<'a, I>(
67 tokens: &mut ::std::iter::Peekable<I>,
68) -> ::std::result::Result<Option<crate::types::SegmentDimensions>, ::aws_smithy_json::deserialize::error::DeserializeError>
69where
70 I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
71{
72 match tokens.next().transpose()? {
73 Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
74 Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
75 #[allow(unused_mut)]
76 let mut builder = crate::types::builders::SegmentDimensionsBuilder::default();
77 loop {
78 match tokens.next().transpose()? {
79 Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
80 Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
81 "Attributes" => {
82 builder = builder.set_attributes(crate::protocol_serde::shape_map_of_attribute_dimension::de_map_of_attribute_dimension(
83 tokens,
84 )?);
85 }
86 "Behavior" => {
87 builder = builder.set_behavior(crate::protocol_serde::shape_segment_behaviors::de_segment_behaviors(tokens)?);
88 }
89 "Demographic" => {
90 builder = builder.set_demographic(crate::protocol_serde::shape_segment_demographics::de_segment_demographics(tokens)?);
91 }
92 "Location" => {
93 builder = builder.set_location(crate::protocol_serde::shape_segment_location::de_segment_location(tokens)?);
94 }
95 "Metrics" => {
96 builder = builder.set_metrics(crate::protocol_serde::shape_map_of_metric_dimension::de_map_of_metric_dimension(tokens)?);
97 }
98 "UserAttributes" => {
99 builder = builder.set_user_attributes(
100 crate::protocol_serde::shape_map_of_attribute_dimension::de_map_of_attribute_dimension(tokens)?,
101 );
102 }
103 _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
104 },
105 other => {
106 return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
107 "expected object key or end object, found: {other:?}"
108 )))
109 }
110 }
111 }
112 Ok(Some(builder.build()))
113 }
114 _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
115 "expected start object or null",
116 )),
117 }
118}