JSON数据的解析和生成(C++)
课题
- 将 JSON 字符串反序列化为 Persons 类(结构)的对象 ,然后将这个对象序列化为 JSON 字符串。
- Persons 类(结构)包含一个字段:Person 类(结构)的 persons 数组。
- Person 类(结构)包含两个字段:字符串类型的 name 字段和整数类型的 age 字段。
安装 "JSON for Modern C++"
$ brew tap nlohmann/json
$ brew install nlohmann_json
安装之后将/usr/local/Cellar/nlohmann_json/3.1.2/include加入 include
示例
#include <iostream>
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace std;
struct Person {
string name;
int age;
};
struct Persons {
vector<Person> persons;
};
void to_json(json& j, const Person& p) {
j = json{{"name", p.name}, {"age", p.age}};
}
void from_json(const json& j, Person& p) {
p.name = j.at("name").get<string>();
p.age = j.at("age").get<int>();
}
void to_json(json& j, const Persons& ps) {
j = json{{"persons", ps.persons}};
}
void from_json(const json& j, Persons& ps) {
ps.persons = j.at("persons").get<vector<Person>>();
}
string jsonString = R"({
"persons" : [
{
"name" : "Joe",
"age" : 12
}
]
})";
int main(int argc, char *args[])
{
json j = json::parse(jsonString);
Persons ps = j;
auto &p = ps.persons[0];
cout << "name: " << p.name << endl
<< "age: " << p.age << endl;
j = ps;
cout << j << endl;
cout << j.dump(2) << endl;
return 0;
}
/*
name: Joe
age: 12
{"persons":[{"age":12,"name":"Joe"}]}
{
"persons": [
{
"age": 12,
"name": "Joe"
}
]
}
*/
JSON数据的解析和生成(C++)的更多相关文章
- JSON数据的解析和生成(Swift)
Codable public typealias Codable = Decodable & Encodable public protocol Decodable {} public pro ...
- VBS进行http请求及JSON数据的读取和生成
背景: 近期帮一个公司做第三方API的二次封装,需要部署到该公司网站.所获取的是Json数据格式.由于该公司原系统采用的ASP+VBS技术方案,因此采用VBS对API进行请求.封装. 实现: 废话不多 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- javascript中 json数据的解析与序列化
首先明确一下概念: json格式数据本质上就是字符串: js对象:JavaScript 中的几乎所有事务都是对象:字符串.数字.数组.日期.函数,等等. json数据的解析: 就是把后端传来的json ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- android客户端从服务器端获取json数据并解析的实现代码
今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下 首先客户端从服务器端获取json数据 1.利用HttpUrlConnection /** * 从指定的U ...
- (转)android客户端从服务器端获取json数据并解析的实现代码
今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下 首先客户端从服务器端获取json数据 1.利用HttpUrlConnection 复制代码 ...
随机推荐
- SONObjetc和String Map Bean互转,JSONArray和String List互转
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; i ...
- SQL注入之Sqli-labs系列第三十六关(基于宽字符逃逸GET注入)和三十七关(基于宽字节逃逸的POST注入)
0X1 查看源码 function check_quotes($string) { $string= mysql_real_escape_string($string); return $string ...
- 1.6 selenium3+firefox环境搭建
1.6 selenium3+firefox环境搭建 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的.(备注:这里 ...
- Kafka 术语
什么是Kafka? Apache Kafka是一个分布式流媒体平台,允许你发布和订阅记录流,允许你以容错方式存储记录流,允许你处理数据流.或是说Kafka是一个分布式.支持分区.多副本的,基于zook ...
- https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名
声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...
- freebsd配置ip 网关 子网掩码 DNS
1.设置IP地址.网关ee /etc/rc.conf #编辑ifconfig_em0="inet 192.168.1.173 netmask 255.255.255.0" ...
- 关于IE无法访问本机网络的问题
多次遇到IE无法访问本机站点的情况,比如架设了一个花生壳,所有人都可以访问,唯独本机不行(服务器),还需要把这个域名加入信任站点,这TMD什么情况.今天又遇到访问本地restful service,用 ...
- C#软件开发实例.私人订制自己的屏幕截图工具(九)使用自己定义光标,QQ截图时的光标
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...
- create table 推荐规则
create table 推荐规则: 所有列都设置NOT NULL,都写备注(comment) 除主键外,所有列都设置默认值(default)
- Excel技巧--反向查询
当要从左侧的表格,查询某人所在的部门时,那么需要逆向查询.VLOOKUP函数只能正向查询.可以使用Match和index函数: Match函数:查询某个值在指定区域所在的位置: Index函数:查询指 ...