【Json11源码阅读】01 Json11库简介(Reamde翻译)

在完成了《c++ Primer》前12章的阅读后,第一次尝试阅读C++源码。

所以选择了一个很小的库,只有hpp和cpp两个代码文件。

主要目的:换一种方式学习,通过解决阅读过程中遇到的问题来学习C++知识。

json11

json11是一个轻量级的C++11库, 提供JSON的序列化和反序列化功能.

核心的对象是 json11::Json. 可以用来表示任意类型的JSON数据:null, bool, number (int or double), string (std::string), array (std::vector), 或者object (std::map).

json11::Json类型的对象和其他值类型一样,支持赋值、拷贝、传递、比较等操作. 我们还提供了辅助方法

  • Json::dump用来将json11::Json类型的对象序列化为string
  • Json::parse (static)用来将std::string反序列化为json11::Json类型的对象

使用C++11提供的初始化器可以很容易创建一个json11::Json对象:

Json my_json = Json::object {
    { "key1", "value1" },
    { "key2", false },
    { "key3", Json::array { 1, 2, 3 } },
};
std::string json_str = my_json.dump();

这里还提供了一些内置的构造函数,可以将标准库类型和用户自定义类型自动的转化为json11::Json对象。例如:

class Point {
public:
    int x;
    int y;
    Point (int x, int y) : x(x), y(y) {}
    Json to_json() const { return Json::array { x, y }; }
};

std::vector<Point> points = { { 1, 2 }, { 10, 20 }, { 100, 200 } };
std::string points_json = Json(points).dump();

json11::Json同时支持下标和关键字索引:

Json json = Json::array { Json::object { { "k", "v" } } };
std::string str = json[0]["k"].string_value();

微信公众号:马志峰的编程笔记

记录一名普通程序员的成长之路

746915-20170417075252118-1065590893.jpg

转载于:https://www.cnblogs.com/woniu02141/p/6721157.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值