1在与网页交互数据的时候,经常用到json.
2头文件
#include "rapidjson/rapidjson.h"
#include "rapidjson/document.h"
#include "rapidjson/reader.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
3实际的函数
一,写URL。字符串的形势,192.168…按照格式
二,new一个NETworkcell
三,请求数据
4实际的解析函数
Document doc;
// 在DOM中解析json字符串
Document doc;//Document为一个文件对象模型
doc.Parse(str);//str为收到的数据,doc.prase()放入即可。
// 读取json数据
const Value& age = doc["age"];
printf("age=%d \n",age.GetInt());
// 修改json数据
age.SetString("data is change");
// 读取对象中的对象
const Value& b = doc["a"]["b"];
printf("b=%d \n",b.GetInt());
// 序列化
StringBuffer buff;
Writer writer(buff);
doc.Accept(writer);
// 打印json字符串
printf(buff.GetString());
const char* name = "xiaoming";
int age = 18;
double height = 1.64;
StringBuffer buff;
Writer writer(buff);
writer.StartObject();
writer.String("name");
//writer.String(name,10); 第二个参数用于设置写入字符串长度,如果超出字符串长度会有垃圾数据
writer.String(name);
writer.String("age");
writer.Int(age);
writer.String("height");
writer.Double(height);
// 数组
writer.String("arr");
writer.StartArray();
for (int i=0;i<5;++i)
{
writer.Int(i);
}
writer.EndArray();
writer.EndObject();
printf(buff.GetString());
const char* str = "{\"employees\": [{ \"firstName\":\"John\" , \"lastName\":\"Doe\" },{ \"firstName\":\"Anna\" , \"lastName\":\"Smith\" },{ \"firstName\":\"Peter\" , \"lastName\":\"Jones\"}]}";
Document doc;
doc.Parse(str);
if (doc.HasParseError() == false)
{
const Value& employees = doc["employees"];
// rapidjson uses SizeType instead of size_t.
for (SizeType i = 0; i < employees.Size(); i++)
{
const Value& temp = employees[i];
printf("firstName=%sďźu008ClastName=%s \n",temp["firstName"].GetString(),temp["lastName"].GetString());
}
}else{
printf("parse error\n");
}
StringBuffer buff;
Writer writer(buff);
writer.StartArray();
for (int i=0;i<5;++i)
{
writer.Int(i);
}
writer.EndArray();
printf("%s",buff.GetString());`
第一步讲解:
Document doc;//Document为一个文件对象模型
doc.Parse(str);//str为收到的数据,doc.prase()放入即可。
第二步讲解:
看这个手册吧,讲的更加清楚
http://rapidjson.org/zh-cn/md_doc_tutorial_8zh-cn.html#ValueDocument