@@ -25,126 +25,26 @@ void {{classname}}::validate()
25
25
// TODO: implement validation
26
26
}
27
27
28
- nlohmann::json { {classname} }::toJson() const
28
+ void to_json( nlohmann::json& j, const { {classname} }& o)
29
29
{
30
- nlohmann::json val = nlohmann::json::object();
31
-
32
- {{#vars} }{ {#isPrimitiveType} }{ {^isListContainer} }{ {^required} }if(m_{ {name} }IsSet)
33
- {
34
- val[" {{baseName}}" ] = m_{{name} };
35
- }
36
- { {/required} }{ {#required} }val["{ {baseName} }"] = m_{ {name} };
37
- { {/required} }{ {/isListContainer} }{ {/isPrimitiveType} }{ {#isListContainer} }{
38
- nlohmann::json jsonArray;
39
- for( const auto& item : m_{{name} } )
40
- {
41
- jsonArray.push_back({{prefix} }ModelBase::toJson(item));
42
- }
43
- { {#required} }val["{ {baseName} }"] = jsonArray;
44
- { {/required} }{ {^required} }
45
- if(jsonArray.size() > 0)
46
- {
47
- val[" {{baseName}}" ] = jsonArray;
48
- } { {/required} }
49
- }
50
- { {/isListContainer} }{ {#isMapContainer} }{
51
- nlohmann::json jsonObj;
52
- for( const auto& item : m_{{name} } )
53
- { {{^items.isContainer} }
54
- jsonObj[item.first] = { {prefix} }ModelBase::toJson(item.second);{ {/items.isContainer} } { {#items.isListContainer} }
55
- jsonObj[item.first] = { {prefix} }ArrayHelper::toJson<{ {{items.items.datatype} }}>(item.second);
56
- { {/items.isListContainer} } { {#items.isMapContainer} }
57
- jsonObj[item.first] = { {prefix} }MapHelper::toJson<{ {{items.items.datatype} }}>(item.second); { {/items.isMapContainer} }
58
- }
59
- { {#required} }val["{ {baseName} }"] = jsonObj; { {/required} }{ {^required} }
60
- if(jsonObj.size() > 0)
61
- {
62
- val[" {{baseName}}" ] = jsonObj;
63
- } { {/required} }
64
- }
65
- { {/isMapContainer} }{ {^isContainer} }{ {^isPrimitiveType} }{ {^required} }if(m_{ {name} }IsSet)
66
- {
67
- val[" {{baseName}}" ] = {{prefix} }ModelBase::toJson(m_{ {name} });
68
- }
69
- { {/required} }{ {#required} }val["{ {baseName} }"] = { {prefix} }ModelBase::toJson(m_{ {name} });
70
- { {/required} }{ {/isPrimitiveType} }{ {/isContainer} }{ {/vars} }
71
-
72
- return val;
30
+ j = nlohmann::json();
31
+ {{#vars} }
32
+ { {#required} }j["{ {baseName} }"] = o.m_{ {name} };{ {/required} }{ {^required} }if(o.{ {nameInCamelCase} }IsSet())
33
+ j["{ {baseName} }"] = o.m_{ {name} };{ {/required} }
34
+ { {/vars} }
73
35
}
74
36
75
- void { {classname } }::fromJson (const nlohmann::json& val )
37
+ void from_json (const nlohmann::json& j, { {classname } }& o )
76
38
{
77
- {{#vars} }{ {#isPrimitiveType} }{ {^isListContainer} }{ {^required} }if(val.find("{ {baseName} }") != val.end())
78
- {
79
- {{setter} }(val.at("{ {baseName} }"));
80
- }
81
- { {/required} }{ {#required} }{ {setter} }(val.at("{ {baseName} }"));
82
- { {/required} }{ {/isListContainer} }{ {/isPrimitiveType} }{ {#isListContainer} }{
83
- m_{{name} }.clear();
84
- { {^required} }if(val.find("{ {baseName} }") != val.end())
85
- {
86
- {{/required} }
87
- for( const auto& item : val["{ {baseName} }"] )
88
- {
89
- {{#isPrimitiveType} }m_{ {name} }.push_back(item);
90
- { {/isPrimitiveType} }{ {^isPrimitiveType} }{ {#items.isString} }m_{ {name} }.push_back(item);
91
- { {/items.isString} }{ {^items.isString} }{ {#items.isDateTime} }m_{ {name} }.push_back(item);
92
- { {/items.isDateTime} }{ {^items.isDateTime} }
93
- if(item.is_null())
94
- {
95
- m_{{name} }.push_back( { {{items.datatype} }}() );
96
- }
97
- else
98
- {
99
- {{{items.datatype} }} newItem;
100
- newItem.fromJson(item);
101
- m_{ {name} }.push_back( newItem );
102
- }
103
- { {/items.isDateTime} }{ {/items.isString} }{ {/isPrimitiveType} }
104
- }
105
- { {^required} }
106
- }
107
- { {/required} }
108
- }
109
- { {/isListContainer} }{ {#isMapContainer} }{
110
- m_{{name} }.clear();
111
- { {^required} }if(val.find("{ {baseName} }") != val.end())
112
- {
113
- {{/required} }
114
- if(val["{ {baseName} }"].is_object()) { {{^items.isContainer} }
115
- m_{ {name} } = { {prefix} }MapHelper::fromJson<{ {{items.datatype} }}>(val["{ {baseName} }"]);
116
- { {/items.isContainer} } { {#items.isContainer} }
117
- for( const auto& item : val["{ {baseName} }"].items() )
118
- { {{#items.isMapContainer} }
119
- { {{items.datatype} }} newItem = { {prefix} }MapHelper::fromJson<{ {{items.items.datatype} }}>(item.value());
120
- { {/items.isMapContainer} }{ {#items.isListContainer} }
121
- { {{items.datatype} }} newItem = { {prefix} }ArrayHelper::fromJson<{ {{items.items.datatype} }}>(item.value());
122
- { {/items.isListContainer} }
123
- m_{ {name} }.insert(m_{ {name} }.end(), std::pair< std::string, { {{items.datatype} }} >(item.key(), newItem));
124
- } { {/items.isContainer} }
125
- }
126
- { {^required} }
127
- }
128
- { {/required} }
129
- }
130
- { {/isMapContainer} }{ {^isContainer} }{ {^isPrimitiveType} }{ {^required} }if(val.find("{ {baseName} }") != val.end())
39
+ {{#vars} }
40
+ { {#required} }j.at("{ {baseName} }").get_to(o.m_{ {name} });{ {/required} }{ {^required} }if(!j.at("{ {baseName} }").is_null())
131
41
{
132
- {{#isString} }{ {setter} }(val.at("{ {baseName} }"));{ {/isString} }{ {#isByteArray} }{ {setter} }(val.at("{ {baseName} }"));{ {/isByteArray} }{ {#isBinary} }{ {setter} }(val.at("{ {baseName} }"));
133
- { {/isBinary} }{ {^isString} }{ {#isDateTime} }{ {setter} }(val.at("{ {baseName} }"));
134
- { {/isDateTime} }{ {^isDateTime} }{ {^isByteArray} }{ {^isBinary} }if(!val["{ {baseName} }"].is_null())
135
- {
136
- {{{dataType} }} newItem;
137
- newItem.fromJson(val["{ {baseName} }"]);
138
- { {setter} }( newItem );
139
- }
140
- { {/isBinary} }{ {/isByteArray} }{ {/isDateTime} }{ {/isString} }
141
- }
142
- { {/required} }{ {#required} }{ {#isString} }{ {setter} }(val.at("{ {baseName} }"));
143
- { {/isString} }{ {^isString} }{ {#isDateTime} }{ {setter} }(val.at("{ {baseName} }"));
144
- { {/isDateTime} }{ {/isString} }{ {/required} }{ {/isPrimitiveType} }{ {/isContainer} }{ {/vars} }
42
+ j.at(" {{baseName}}" ).get_to(o.m_{{name} });
43
+ o.m_{ {name} }IsSet = true;
44
+ } { {/required} }
45
+ { {/vars} }
145
46
}
146
47
147
-
148
48
{ {#vars} }{ {#isContainer} }{ {{dataType} }}& { {classname} }::{ {getter} }()
149
49
{
150
50
return m_{{name} };
0 commit comments