水木社区手机版
首页
|版面-C++程序设计语言(CPlusPlus)|
新版wap站已上线
返回
1/1
|
转到
主题:quicktype这个根据json自动生成处理代码的网站
楼主
|
z16166
|
2024-08-29 12:48:10
|
展开
quicktype这个根据json自动生成处理代码的网站应该绝对没想到有人会这么用它提供的功能:
把通信双方(一方是C#,一方是C++)用到的所有类型的消息放在一个巨大的结构中,每次通信传递这个巨大的完整结构。
然后,
这个网站生成的C++的大结构中,每个字段类型可以设置为全都是boost::optional<>(要打勾那个全部搞成optional的生成选项才会),
小结构全部是class而不是struct,每个字段全都要通过set_xxx(),get_xxx()来操作。
好在是本地RPC,就算是几百个字段,速度也不慢。
原因在于,全部消息类型的json例子都放在同一个json文件中,每次从这个json文件中全选,复制粘贴到那个网站来生成代码。而不是每次只复制粘贴新增的消息类型到那个网站。
最后效果类似这种。一是消息类型大聚合,二是滥用boost::optional,三是这网站生成的setter代码全是传值(传的boost::optional<T>)。
class MessageType1 {
public:
boost::optional<bool> get_field_1();
set_field_1(boost::optional<bool> value);
......
boost::optional<string> get_field_N();
set_field_N(boost::optional<string> value);
private:
boost::optional<bool> field_1;
......
boost::optional<string> field_N;
};
......
class MessageTypeN {
......
};
class BigStruct {
public:
boost::optional<MessageType1> get_message_type_1();
void set_message_type_1(boost::optional<MessageType1>);
......
boost::optional<MessageTypeN> get_message_type_N();
void set_message_type_N(boost::optional<MessageTypeN>);
private:
boost::optional<MessageType1> message_type_1;
......
boost::optional<MessageTypeN> message_type_N;
};
--
FROM 114.241.228.*
2楼
|
z16166
|
2024-08-29 14:20:14
|
展开
自动生成的代码倒是这么处理的
不过到处是boost::optional,太恐怖了
这个网站能生成struct,不过它默认的是class + getter/setter,也恐怖。
【 在 ABCDEFGHJKLM 的大作中提到: 】
: 类定义复杂, 传递数据不一定大, null值可选择省略不传, 100个字段只有1个非null, 就很正常了
--
修改:z16166 FROM 114.241.228.*
FROM 114.241.228.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版