rapidjson #1 入门

前端之家收集整理的这篇文章主要介绍了rapidjson #1 入门前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

基本概念

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();

猜你在找的Json相关文章