当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

xpack

JSON/XML/BSON 与 C++ 结构体的转换库
授权协议 Apache
开发语言 C/C++
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 韩淇
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

xpack 是实现 C++ 结构体和 JSON/XML/BSON 互转的库。C++ 初学者可以通过该项目学到高阶的宏技巧和初级的 SFINAE 写法。

基本用法

  • 结构体后面用XPACK宏包含各个变量,XPACK内还需要一个字母,不同字母的意义请参考FLAG
  • 用xpack::json::encode把结构体转json
  • 用xpack::json::decode把json转结构体
#include <iostream>
#include "xpack/json.h" // Json包含这个头文件,xml则包含xpack/xml.h

using namespace std;

struct User {
    int id;
    string  name;
    XPACK(O(id, name)); // 添加宏定义XPACK在结构体定义结尾
};

int main(int argc, char *argv[]) {
    User u;
    string data = "{\"id\":12345, \"name\":\"xpack\"}";

    xpack::json::decode(data, u);          // json转结构体
    cout<<u.id<<';'<<u.name<<endl;

    string json = xpack::json::encode(u);  // 结构体转json
    cout<<json<<endl;

    return 0;
}

容器支持

目前支持下列容器(std)

  • vector
  • set
  • list
  • map<string, T>
  • map<integer, T> // 仅JSON,XML不支持
  • unordered_map<string, T> (需要C++11支持)
  • shared_ptr (需要C++11支持)
  • 经常有网友问xpack(原来的x2struct)的实现原理,这里用一个文章大概讲解一下。以下分析均基于Ubuntu 16.04环境进行。写的比较简略,有疑惑的可以在评论区留言,我慢慢补全。 xpack主要包含两部分: 通过XPACK宏给结构体添加encode/decode函数 实现相应的encoder/decoder类 XPACK宏展开 展开结果 先说结论。 可以写一段简单的代码辅助分析(保存为t

  • 背景 由于项目中需要用到es存储geo信息,所以就在测试机器上使用docker快速搭建了一台单节点的es。 拉取镜像 选择这个版本的原因,看官网上介绍此版本比较稳定,其次是es的依赖发生了变化,和es8版本依赖是一样的,具体依赖下面会有介绍。 docker pull elasticsearch:7.17.6 # 查看本地es镜像 docker images | grep elasticsearch

  • 2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。 这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana 提供全面保护。 免费提供的核心安全功能如下: 1)TLS 功能。 可对通信进行加密; 2)文件和原生 Realm。 可用于

  • 通过证书配置集群间节点通信认证: bin/elasticsearch -E node.name=node1 -E cluster.name=geektime -E path.data=node1_data -E http.port=9200 -E xpack.security.enabled=true -E xpack.security.transport.ssl.enabled=true -E

  • 2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。 这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana 提供全面保护。 免费提供的核心安全功能如下: 1)TLS 功能。 可对通信进行加密; 2)文件和原生 Realm。 可用于

  • Elk7.17.2集群安装说明 版本:7.17.2 测试环境: ip1、ip2、ip3 X-Pack是Elastic Stack扩展功能,提供安全性,警报,监视,报告,机器学习和许多其他功能。 ES7.0+之后,默认情况下,当安装Elasticsearch时,会安装X-Pack,无需单独再安装。 自7.1+版本之后,基础级安全永久免费。 基础级安全包含: 加密通信 基于角色 的控制访问 文件和原生

  • 2019年5月21日,Elastic官方发布消息: Elastic Stack 新版本6.8.0 和7.1.0的核心安全功能现免费提供。 这意味着用户现在能够对网络流量进行加密、创建和管理用户、定义能够保护索引和集群级别访问权限的角色,并且使用 Spaces 为 Kibana提供全面保护。 免费提供的核心安全功能如下: 1)TLS 功能。 可对通信进行加密; 2)文件和原生 Realm。 可用于创

  • ELK xpack 安全验证 参考教程 为 Elasticsearch 设置最低安全性: https://www.elastic.co/guide/en/elasticsearch/reference/7.13/security-minimal-setup.html 为 Elastic Stack 设置基本安全性 : https://www.elastic.co/guide/en/elastics

  • 本文没开启证书,大家可以按需设置 一、es集群配置 es集群 10.10.100.4 10.10.100.5 10.10.100.6 1、开启的配置如下(增加的配置参数) # /etc/elasticsearch/elasticsearch.yml xpack.security.enabled: true 2、重启es集群(三台都要操作) # systemctl restart elas

  •         xpack库是可以将结构体转为json字符串或者xml的一个库。但是这个库只有头文件,没有其他的cpp或者依赖,这也是我使用的原因。在使用的过程中,发现xpack也是支持Qt的。但是需要修改config.h头文件,将原来注释掉的//#define XPACK_SUPPORT_QT注释,这样就可以在xpack里面使用Qt了。         我们先定义一个结构体:        st

  • QJsonDocument提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 当前项目需要将大量结构体数据转换为json格式存储,此处我选择xpack(https://gitee.com/xyz347/xpack#基本用法),下载链接和使用方法原作者讲的足够清楚,因此不再赘述。我在使用过程主

  • elasticsearch集群搭建并开启xpack密码验证 集群搭建(忽略,网上文章很多,自行寻找,有问题留言) 开启密码验证(详细说) 以下操作先在一台机器操作: 1、获得elastic-stack-ca.p12证书 首先需要制作一个证书,我在这里假设,你并没有预先获得一个CA,需要先生成一个: ./bin/elasticsearch-certutil cert --ca elastic-sta

  • 1、elasticsearch安装xpack插件 离线安装xpack: /usr/local/elasticsearch-5.4.0/bin/elasticsearch-plugin install file:///usr/local/software/x-pack-5.4.0.zip 卸载xpack: /usr/local/elasticsearch-5.4.0/bin/elasticsearc

  • logstash连接elasticsearch作为output的时候连接xpack组件解决方案 添加配置项ilm_enabled output { elasticsearch { hosts => ["http://xxx.xxx.xxx.xxx:9200"] user => "xxx" password => "xxx" i

  • 前言:8.0版本默认开启了xpack,本篇屏蔽了此功能 前置安装:docker,组件:ELK+Filebeat 一、ELK搭建 1. 下载ELK镜像(注意所有组件版本必须一致): docker pull docker.elastic.co/elasticsearch/elasticsearch:8.1.1 docker pull docker.elastic.co/kibana/kibana:8.

 相关资料
  • 问题内容: 我正在使用https://github.com/mongodb/mongo-go- driver ,目前正在尝试实现这种结构的部分更新 例如,如果我有 然后,我希望存储文档中唯一的“标题”字段将被更改。 我需要写类似 问题是我不想用或手动编码每个非空字段。我尝试使用但出现错误 无法为* models.NoteUpdate类型创建元素,请尝试使用bsoncodec.ConstructEl

  • 问题内容: 我正在尝试将可工作的mongo查询转换为golang中的bson。我掌握了一些基本知识,但仍在努力寻找如何将更高级的查询集成到组合中的方法。 有人可以帮助我转换以下查询吗?希望它应该给我我需要的方向…不幸的是,除了评估和查询之外,我无法找到许多示例。 这在mongo中有效: 这适用于golang / bson: 我该如何正确介绍该声明? 问题答案: 在您的情况下,它将是:

  • 主要内容:1、定义结构体,2、结构体的特征,3、类与结构体在 C# 中,结构体也被称为结构类型(“structure type”或“struct type”),它是一种可封装数据和相关功能的值类型,在语法上结构体与类(class)非常相似,它们都可以用来封装数据,并且都可以包含成员属性和成员方法。 1、定义结构体 要定义一个结构体需要使用 struct 关键字,每个结构体都可以被看作是一种新的数据类型,其中可以包含多个成员(成员属性和成员方法),例如下面

  • 主要内容:1. 定义结构体,2. 访问结构成员,3. 结构体作为函数参数,4. 指向结构的指针,5. 位域Objective-C数组可定义包含多个相同类型的数据项的变量类型,但结构体是Objective-C编程中的另一个用户定义数据类型,它可组合不同类型的数据项。 结构体用于表示记录,假设要图书馆中跟踪书籍信息。可能希望跟踪每本书的以下属性 - 标题 作者 学科 书名 1. 定义结构体 要定义结构体,必须使用语句。 语句定义一个新的数据类型,为程序提供多个成员。 语句的格式如下所示 - 是可选的

  • 主要内容:结构体变量,成员的获取和赋值前面的教程中我们讲解了 数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数,所在的学习小组为字符,成绩为小数,因为数据类型不同,显然不能用一个数组来存放。 在C语言中,可以使用 结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为: struct 结构体名{    

  • 在 C# 中,结构体是一种值数据类型。包含数据成员和方法成员。 struct 关键字是用于创建一个结构体。 结构体是用来代表一个记录。假设你想追踪一个图书馆的书。你可能想追踪每本书的属性如下: 标题 作者 类别 书号 定义一个结构体 定义一个结构体,你必须要声明这个结构体。结构体声明定义了一种新的数据类型,这个数据类型为你的程序包含了一个以上的成员变量。 例如,你可以声明一个书的结构如下: str

  • 在endElement中使用Sax转换数据 在debug中,当我在处理程序中的characters方法中读取它时,已经转换了与数,并且数据被截断了。 我见过很多关于这个的问题,但从来没有解决办法。有什么想法吗?

  • 我有一个C#winform应用程序,将文件保存到sqlserver数据库(2014)到VAR二进制(MAX)字段 功能保存 要检索的函数 这工作很好,现在我已经要求将数据库转换为XML,用于未连接到服务器的PC 转换为XML的函数 它工作正常,除了二进制文件,当 输出XML 当尝试将其转换回图像时,它会给我1kb的文件,字符串不是实际图像 二进制字段有特殊的转换吗? 非常感谢。 编辑问题解决感谢@