JsonReflect

跨平台 JSON 序列化与反序列化库
授权协议 LGPL-3.0
开发语言 C/C++
所属分类 Web应用开发、 JSON/BSON开发包
软件类型 开源软件
地区 国产
投 递 者 程修雅
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

JsonReflect介绍

JsonReflect是基于C++11实现跨平台JSON序列化与反序列化库。支持将对象序列化为JSON字符串或者将JSON字符串反序列化的对象。作者利用宏与C++11的typeid运算符实现一种动态反射机制,大大简化了序列化与反序列化工作。

安装方法

1、下载源码

git clone https://gitee.com/xungen/jsonreflect.git

2、在源码目录下执行make命令编译输出静态库文件libjson.a

3、在源码目录下执行make test命令可以查看JsonReflect库测试结果

4、源码目前下有一个名为test.cpp的示例代码,你可以参考示例代码的使用方法,示例代码内容如下:

#include "json.h"

JsonEntity(Item)
{
public:
    //定义名为ival的int类型成员
    rint(ival);
    //定义名为bval的bool类型成员
    rbool(bval);
    //定义名为sval的string类型成员
    rstring(sval);
};

JsonEntity(Entity)
{
public:
    //定义名为ival的int类型成员
    rint(ival);
    //定义名为bval的bool类型成员
    rbool(bval);
    //定义名为sval的string类型成员
    rstring(sval);
    //定义名为list的vector<Item>类型成员
    rarray(Item, list);
};

int main(int argc, char** argv)
{
    Entity obj;
    Entity tmp;
    sp<Item> item;
    
    obj.ival = 0;
    obj.bval = false;
    obj.sval = "zero";

    item = obj.list.add();
    item->ival = 1;
    item->bval = true;
    item->sval = "one";

    item = obj.list.add();
    item->ival = 2;
    item->bval = true;
    item->sval = "two";

    item = obj.list.add();
    item->ival = 3;
    item->bval = true;
    item->sval = "three";

    //对象序列化为JSON字符串
    cout << obj.toString() << endl << endl;

    cout << endl;

    //JSON字符串反序列化为对象
    tmp.fromString(obj.toString());

    cout << tmp.toString() << endl << endl;

    return 0;
}
 相关资料
  • FAQs in section [36]: [36.1]“序列化”是什么东东? [36.2] 如何选择最好的序列化技术? [36.3] 如何决定是要序列化为可读的(“文本”)还是不可读的(“二进制”)格式? or non-human-readable ("binary") format?") [36.4] 如何序列化/反序列化数字,字符,字符串等简单类型? [36.5] 如何读/写简单类型为可读的

  • 上一小节我们学习了 Java 的输入输出流,有了这些前置知识点,我们就可以学习 Java 的序列化了。本小节将介绍什么是序列化、什么是反序列化、序列化有什么作用,Serializable 接口以及 Externalizable 接口,常用序列化工具介绍等内容。 1. 序列化与反序列化 序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式,以留待后续在相同或另一台计算机环境中,能

  • 问题内容: 我正在使用大猩猩 websocket,并且正在计划使用json进行序列化/反序列化。 假设我有这样的结构来接收传入的消息: 和 大猩猩提供接收传入的消息。传入的消息可以是Foo或Bar,但是我不能使用和收听其他消息,这很混乱。我想要像javascript 这样的东西。如果接收到Foo,则如何处理传入消息,然后将其存储到结构中;如果接收到Bar,则将其存储到结构中? 我正在解决方案正在使

  • 本文向大家介绍什么是序列化与反序列化?相关面试题,主要包含被问及什么是序列化与反序列化?时的应答技巧和注意事项,需要的朋友参考一下 序列化:将对象状态转换为可保持或传输的格式的过程。将对象实例的字段及类的名称转换成字节流,然后把字节流写入数据流 反序列化:将流转换为对象。 这两个过程结合起来,可以轻松地存储和传输数据。    

  • 我在我的应用程序中使用、模块进行身份验证策略。我试图理解是否还需要使用和方法。据我所知,这些方法使用会话来存储用户信息。我怀疑使用已经实现了使用这些方法的目的。还是我在这里完全错了? 如果我的假设错了,请指正。

  • 问题内容: 我有以下JSON字符串要反序列化: 我正在使用DataContractJsonSerializer方法。 它由项目数组组成,我找不到使用VB.Net可以反序列化此结构的示例。我具有以下Application类来存储此信息: 问题答案: 我建议你使用过。原因如下: 更快 比简单的序列化需要更多的代码。 您无需将and 属性与 使用此数据类 并使用它反序列化您的: 如果仍要使用,则可以使用

  • 我有一个简单的问题,假设我有这个json 以这种方式映射: 我想知道是否可以通过使用一些自定义setter/注释或其他东西在内部对象中保存一个外部字段: PS:由于json的复杂性,使用自定义反序列化是我最后的选择

  • 我想解析这个json文件。 {“特征”:[{“类型”:“特征”,“几何”:“{“类型”:“多边形”,“坐标”:[[26.4217861898109,40.127607984644],[26.4219934821323,40.1275230229872],[26.4218810759267,40.1273800013679],[26.4216801413981,40.1274730404221],[