加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

rapidjson #1 入门

发布时间:2020-12-16 18:55:49 所属栏目:百科 来源:网络整理
导读:基本概念 value 每个JSON值都存为Value类型。 而整个框架结构为Document。 Document 和Value的关系就是类似树结构和节点结构的关系。 数据类型 Object : 键值对的集合,键必须是字串。 Array String 对应的枚举分别是kObjectType, kArrayType,kStringType

基本概念

value

  • 每个JSON值都存为Value类型。
  • 而整个框架结构为Document。
    Document 和Value的关系就是类似树结构和节点结构的关系。

数据类型

  • Object : 键值对的集合,键必须是字串。
  • Array
  • String
    对应的枚举分别是kObjectType, kArrayType,kStringType。
  • 1,貌似还有bool类型? 那bool也是object的一种?
  • 2,所有的数值在JSON 中都用IsNumber()来判断。
  • 3,Array类型看来也是Object的一种。
  • 4,还有迭代器雷西你给 ConstValueIterrator。
  • 5,SizeType,尽管它只是unsigned 的typedef。
  • 6,rapodjson中的数值,一般是unsigned,init,uint64_t,int64_t,double 这几种。
  • 7,默认情况下创建的Value类型是Null。

  • 一般来说,创建存储空间不固定的对象,都需要分配器。比如 Value key(“k”,doc.GetAllocator());
    而Value key(42)就不需要。

空Object或者Array的办法有俩:
一是 Value obj;obj.SetObject();
二是 Value obj(kObjectType);

转移语义

把存储从一个变量移到另外一个,原先的被置为Null

流畅接口

转义函数

PushBack(); AddMember();

Value比较

== 和!=

DOM和JSON的互转

这里json就可以理解成一个字串。

分配器

Document document;
Document::AllocatorType& allocator = document.GetAllocator();

对象类型

DOM模型用Document , doc;
根, Object类型的Value,例如 Value root(kObjectType);

// string 类型的value
一个值,类型为string ,例如:

Value name(kStringType);

设置Value类型的值:

name.SetString("hello",allocator);

放到root中,并用字串“name”作为key:

root.AddMember("name",name,allocator);

// 数组类型的value

Value sites(kStringType);

往里面添加元素

site.PushBack("hello",allocator).PushBack("world",allocator);
root.AddMember("sites",sites,allocator);

从Value 写入到 string

StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
root.Accept(writer);
string strRoot = buffer.GetString();
char *pRoot = buffer.GetString();

doc.FindMember();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读