一、背景
在C++项目开发中,不同的服务之间会定义通讯接口,接口格式定义中的通讯数据往往是json格式的。为了快速开发,我的需求如下:
1.定义好通讯接口后,就定义好了交互的json内容格式。我希望有工具可以一键将json内容转换成C++结构体;
2.服务交互过程中,我希望结构体数据和json内容可以相互转换,并且不需要写两者之间的转换代码。请注意:重点是不需要写两者之间的转换代码
二、解决方案
先说需求2,我在网上找到一个开源库,可以满足此需求,开源库介绍地址:
json与C++结构体互相转换_c++ 结构体转json_xyz347的博客-优快云博客
gitee地址:xpack: 用于C++结构体和json/xml/bson/mysql的互相转换
简单介绍一下这个库的作用及用法:如下图所示,在结构体中增加XPACK宏定义,就可以轻松完成json字符串与结构体之间相互转换了,节省了大量的编写转换代码的时间。
也许有人会说,上图所示的结构体就2个变量,写转换代码几行就搞定了。
如果json的内容如下呢?写转换代码的工作量大不大呢?
{
"status": 0,
"message": "message",
"data": {
"search_data": [{
"elements": [{
"rating": 0,
"name": "奈良市",
"url": "/scenic/3/10052/",
"wish_to_go_count": 328,
"name_orig": "奈良市",
"visited_count": 1958,
"comments_count": 0,
"location": {
"lat": 34.685087,
"lng": 135.805
},
"has_experience": false,
"rating_users": 0,
"name_zh": "奈良市",
"name_en": "Nara",
"type": 3,
"id": 10052,
"has_route_maps": false,
"icon": "http://media.breadtrip.com/images/icons/2/city.png"
},
{