acl  3.5.3.0
serialize.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/string.hpp"
4 #include "../stdlib/json.hpp"
5 #include <string>
6 
7 namespace acl
8 {
9 
10 template<typename T>
11 bool deserialize(json& j, T& o, string* err = NULL)
12 {
13  if (!j.finish())
14  {
15  if (err)
16  err->append("json not complete yet!");
17  return false;
18  }
19 
20  std::pair<bool, std::string> r = gson(j.get_root(), o);
21  if (r.first == false)
22  {
23  if (err)
24  err->format_append("deserialize error=%s, json=[%s]",
25  r.second.c_str(), j.to_string().c_str());
26  return false;
27  }
28 
29  return true;
30 }
31 
32 template<typename T>
33 void serialize(T& o, string& buf)
34 {
35  json j;
36  json_node& n = gson(j, o);
37  (void) n.to_string(&buf);
38  buf += "\r\n";
39 }
40 
41 } // namespace acl
bool finish(void)
void serialize(T &o, string &buf)
Definition: serialize.hpp:33
json_node & get_root(void)
char * c_str() const
bool deserialize(json &j, T &o, string *err=NULL)
Definition: serialize.hpp:11
const string & to_string(string *out=NULL) const
const string & to_string(string *out=NULL, bool add_space=false) const