- 主题:json反序列化的C++库,用哪个?
json -> c++ object。
由于各种原因,没有使用protobuf,而是用了json。
用jsoncpp手写代码挨个提取json节点里的数据挺无聊的,纯粹是堆代码行数。
看到一些用boost::fusion/boost::hana搞的。
这个star值挺高的
https://github.com/nlohmann/json#serialization--deserialization
不知道有没啥推荐的
--
FROM 114.241.227.*
这个可能是你想要的
https://github.com/Loki-Astari/ThorsSerializer
在github上搜索 c++的serialization库
【 在 z16166 的大作中提到: 】
: json -> c++ object。
: 由于各种原因,没有使用protobuf,而是用了json。
: 用jsoncpp手写代码挨个提取json节点里的数据挺无聊的,纯粹是堆代码行数。
: ...................
--
FROM 111.199.191.*
还是protobuf啊,重点不是怎么把schema映射成c++数据结构么。
至于中间用json还是二进制,只不过改一个函数的事情。
好像很多大厂都用nlohmann-json, 主要是对c++新标准支持的好。
【 在 z16166 的大作中提到: 】
: json -> c++ object。
: 由于各种原因,没有使用protobuf,而是用了json。
: 用jsoncpp手写代码挨个提取json节点里的数据挺无聊的,纯粹是堆代码行数。
: ...................
--
FROM 222.129.50.*
看了一下,protobuf新版支持json和binary的互转:
https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.util.json_util
【 在 ble 的大作中提到: 】
: 还是protobuf啊,重点不是怎么把schema映射成c++数据结构么。
: 至于中间用json还是二进制,只不过改一个函数的事情。
: 好像很多大厂都用nlohmann-json, 主要是对c++新标准支持的好。
: ...................
--
FROM 114.241.227.*
不一样
protobuf是一种先定义schema后,使用的是google的数据类型作为模型
这种方式,使用起来对代码的侵入性大, 类型来回转换,使用感觉不佳
理想的方式是,以原生的c++数据结构作为schema,任意定义类型,
将序列化部分与数据结构定义剥离开,序列化实现不会影响系统的模型定义
【 在 ble 的大作中提到: 】
: 还是protobuf啊,重点不是怎么把schema映射成c++数据结构么。
: 至于中间用json还是二进制,只不过改一个函数的事情。
: 好像很多大厂都用nlohmann-json, 主要是对c++新标准支持的好。
: ...................
--
FROM 111.199.191.*
protobuf是通信协议, 不是用来序列化对象的。完全不同的用处。
很多人非要把proto用来存储对象,变向说明c++的序列化没啥好用的库。
【 在 iwantfly 的大作中提到: 】
: 不一样
: protobuf是一种先定义schema后,使用的是google的数据类型作为模型
: 这种方式,使用起来对代码的侵入性大, 类型来回转换,使用感觉不佳
: ...................
--来自微微水木3.5.12
--
FROM 39.144.105.*
C++的Reflection TS啥时候final?
【 在 KillnCov 的大作中提到: 】
: protobuf是通信协议, 不是用来序列化对象的。完全不同的用处。
: 很多人非要把proto用来存储对象,变向说明c++的序列化没啥好用的库。
:
--
FROM 114.241.227.*
哈哈,就用那个nl…man,名字不好拼那个,出镜率很高。我看红点时,刷到过好多次。
至于cpp的reflection…… 且着呢,老码农换语言换平台前,能用上module就不错了~
Qt写moc的那个人,好像也一直等着,实现基于反射的moc,好去掉moc,洗白Qt不是cpp的谣言:-)
点发送前,搜了下circle编译器,是支持的
【 在 z16166 的大作中提到: 】
: C++的Reflection TS啥时候final?
:
--
FROM 124.114.151.*
即使只使用protobuf作为通讯层
那么你在系统内部需要定义自己的数据结构
然后你需要通信的时候,再把自己的数据结构转化为 protobuf
也是一样的
除非你使用protobuf的类型作为基础结构
【 在 KillnCov 的大作中提到: 】
: protobuf是通信协议, 不是用来序列化对象的。完全不同的用处。
: 很多人非要把proto用来存储对象,变向说明c++的序列化没啥好用的库。
: --来自微微水木3.5.12
: ...................
--
FROM 111.199.191.*