std::string requestToString(const Request &request) { TRACE(std::cout, ""); std::string retVal("{\n"); if (request.has_header()) { retVal.append("Header: {"); if (request.header().has_type()) { retVal.append("type: ") .append(string_utils::toString<int>(request.header().type())); } if (request.header().has_trace()) { retVal.append("trace: ").append(request.header().trace()); } retVal.append("}\n"); } if (request.has_payload()) { retVal.append("Payload: {"); if (request.payload().has_key()) { Id id; id.ParseFromString(request.payload().key()); retVal.append(idToString(id)); } if (request.payload().has_value()) { Person person; person.ParseFromString(request.payload().value()); retVal.append(personToString(person)); } retVal.append("}\n"); } retVal.append("}"); return retVal; }
int main() { using namespace x; Person p; p.set_name("tom"); p.set_id(88); p.set_email("*****@*****.**"); std::string str; p.SerializeToString(&str);//将对象序列化到字符串,除此外还可以序列化到fstream等 printf("%s\n", str.c_str()); Person x; x.ParseFromString(str);//从字符串反序列化 printf("x.name=%s\n", x.name().c_str());//这里的输出将是tom,说明反序列化正确 return 0; }
int main() { Person p; p.set_name("tom"); p.set_id(88); p.set_email("*****@*****.**"); std::string str; p.SerializeToString(&str); printf("%s\n", str.c_str()); Person x; x.ParseFromString(str); printf("x.name = %s\n", x.name().c_str()); printf("x.email= %s\n", x.email().c_str()); return 0; }
std::string responseToString(const Response &response) { TRACE(std::cout, ""); std::string retVal("Response: {\n"); if (response.has_header()) { retVal.append("Header: {\n"); if (response.header().has_returncode()) retVal.append("returnCode: ") .append(string_utils::toString<int>(response.header().returncode())); if (response.header().has_payload()) { retVal.append("payload: ").append(response.header().payload()); } retVal.append("}\n"); } if (response.has_payload()) { retVal.append("Payload: {\n"); Person person; person.ParseFromString(response.payload()); retVal.append(personToString(person)); retVal.append("}\n"); } retVal.append("}\n"); return retVal; }