TEST(json_proto, from_object) { Employee emp; emp.set_id(234000); emp.set_name("Tom"); emp.set_age(14); emp.set_gender("male"); emp.add_role("role1"); emp.add_role("role2"); emp.add_role("role3"); emp.mutable_dept()->set_id(19990); emp.mutable_dept()->set_name("12345"); Education* edu = emp.add_edu(); edu->set_when("2000-2004"); edu->set_school("ncut"); string toJson = ProtobufJson::toJsonString(&emp); Employee emp1; ResultCode status = (ResultCode)ProtobufJson::parseJsonFromString(&emp1, toJson); if (status != RC_SUCCESS) { DVLOG(2) << "Parse json error. Caused by " << getErrorDescription(status); return; } ASSERT_EQ(emp1.id(), emp.id()); ASSERT_EQ(emp1.name(), emp.name()); ASSERT_EQ(emp1.age(), emp.age()); ASSERT_EQ(emp1.gender(), emp.gender()); ASSERT_EQ(emp1.role(0), emp.role(0)); ASSERT_EQ(emp1.role(1), emp.role(1)); ASSERT_EQ(emp1.role(2), emp.role(2)); ASSERT_EQ(emp1.dept().id(), emp.dept().id()); ASSERT_EQ(emp1.dept().name(), emp.dept().name()); ASSERT_EQ(emp1.edu(0).when(), emp.edu(0).when()); ASSERT_EQ(emp1.edu(0).school(), emp.edu(0).school()); }