大家有没有在项目中遇到过,将一些预定义的本地结构体转换为Json字符串后,发送到网络中的情形。那我猜想下大家常规的做法:写一个函数,传入结构体的指针,然后在函数中对结构体的每一个成员根据其类型,使用Json类库的赋值方法,直接或间接创建Json子对象,组成一个内存树状结构,最后调用Json类库的方法生成字符串。这样的做法似乎比较完美,工作完成得很好,确实也挑不出什么毛病来,让我们先看看在golang中是怎么做的:
type Person struct {
Name string
Age int
}
person1 := Person {
Name : "abc123",
Age : 20,
}
// Json序列化
data, _ := json.Marshal(&person1)
就一行代码,使用起来十分清爽。
而在C++的实现是这样的:
struct SPerson
{
std::string strName;
int nAge;
};
SPerson person1 = {
.strName = "abc123",
.nAge = 20,
};
Json::Value jsPerson1;
jsPerson1["name"] = person1.strName;
jsPerson1["a