rapidjson宏定义封装
来源:互联网 发布:淘宝黑刷干货 编辑:程序博客网 时间:2024/06/08 02:21
代码块
生成JSon字符串宏定义:
define BeginJSonor() \
{ rapidjson::Document JSonDoc; \ rapidjson::Document::AllocatorType & allocator = JSonDoc.GetAllocator(); \ rapidjson::Value Obj(rapidjson::kObjectType); \
define JSonorObject() \
rapidjson::Value Obj(rapidjson::kObjectType); \
define JSonorString(Member, Texter) \
{ assert(typeid(CString) == typeid(Texter)); \ std::string strText = CStringA(Texter); \ rapidjson::Value StringObj(rapidjson::kStringType); \ StringObj.SetString(strText.c_str(), strText.size(), allocator); \ Obj.AddMember(Member, StringObj, allocator); }; \
define JSonorInt(Member, Intor) \
{ assert(typeid(int) == typeid(Intor)); \ Obj.AddMember(Member, Intor, allocator); }; \
define JSonorDouble(Member, Doubler) \
{ assert(typeid(double) == typeid(Doubler)); \ Obj.AddMember(Member, Doubler, allocator); }; \
define JSonorBool(Member, Booler) \
{ assert(typeid(bool) == typeid(Booler)); \ Obj.AddMember(Member, Booler, allocator); }; \
define BeginJSonorArray() \
{ rapidjson::Value ObjArray(rapidjson::kArrayType); \
define JSonorItemObject() \
rapidjson::Value ItemObj(rapidjson::kObjectType); \
define JSonorItemString(Member, Texter) \
{ assert(typeid(CString) == typeid(Texter)); \ std::string strText = CStringA(Texter); \ rapidjson::Value StringObj(rapidjson::kStringType); \ StringObj.SetString(strText.c_str(), strText.size(), allocator); \ ItemObj.AddMember(Member, StringObj, allocator); }; \
define JSonorItemInt(Member, Intor) \
{ assert(typeid(int) == typeid(Intor)); \ ItemObj.AddMember(Member, Intor, allocator); }; \
define JSonorItemDouble(Member, Doubler) \
{ assert(typeid(double) == typeid(Doubler)); \ ItemObj.AddMember(Member, Doubler, allocator); }; \
define JSonorItemBool(Member, Booler) \
{ assert(typeid(bool) == typeid(Booler)); \ ItemObj.AddMember(Member, Booler, allocator); }; \
define JSonorPushBack() \
ObjArray.PushBack(ItemObj, allocator); \
define EndJSonorArray(Member) \
Obj.AddMember(Member, ObjArray, allocator); \ }; \
define EndJSonor() \
rapidjson::StringBuffer buf; \ rapidjson::Writer<rapidjson::StringBuffer> writer(buf); \ Obj.Accept(writer); \ return buf.GetString(); \}; \
解析JSon字符串:
define BeginJSonParser() \
{ \ rapidjson::Document JSonDoc; \
define JSonParse(JSonText) \
JSonDoc.Parse<0>(JSonText.c_str()).HasParseError() \
define JSonHasMember(Member) \
JSonDoc.HasMember(Member) \
define JSonGetInt(Member) \
JSonDoc[Member].GetInt() \
define JSonGetString(Member) \
JSonDoc[Member].GetString() \
define JSonGetBool(Member) \
JSonDoc[Member].GetBool() \
define JSonGetDouble(Member) \
JSonDoc[Member].GetDouble() \
define BeginParserArray(Member) \
{ \ rapidjson::Value & ArrayObj = JSonDoc[Member]; \
define IfArray() \
if(ArrayObj.IsArray()) \ { \
define TraverseArray() \
for(rapidjson::SizeType i = 0; i < ArrayObj.Size(); i++) \ { \ rapidjson::Value & ItemObj = ArrayObj[i]; \
define ArrayHasMember(Member) \
ItemObj.HasMember(Member) \
define ArrayGetInt(Member) \
ItemObj[Member].GetInt() \
define ArrayGetString(Member) \
ItemObj[Member].GetString() \
define ArrayGetBool(Member) \
ItemObj[Member].GetBool() \
define ArrayGetDouble(Member) \
ItemObj[Member].GetDouble() \
define EndTraverse() \
} \
define EndIf() \
} \
define EndParserArray() \
}; \
define EndJSonParser() \
}; \
目录
用 [TOC]
来生成目录:
- 代码块
- define BeginJSonor
- define JSonorObject
- define JSonorStringMember Texter
- define JSonorIntMember Intor
- define JSonorDoubleMember Doubler
- define JSonorBoolMember Booler
- define BeginJSonorArray
- define JSonorItemObject
- define JSonorItemStringMember Texter
- define JSonorItemIntMember Intor
- define JSonorItemDoubleMember Doubler
- define JSonorItemBoolMember Booler
- define JSonorPushBack
- define EndJSonorArrayMember
- define EndJSonor
- define BeginJSonParser
- define JSonParseJSonText
- define JSonHasMemberMember
- define JSonGetIntMember
- define JSonGetStringMember
- define JSonGetBoolMember
- define JSonGetDoubleMember
- define BeginParserArrayMember
- define IfArray
- define TraverseArray
- define ArrayHasMemberMember
- define ArrayGetIntMember
- define ArrayGetStringMember
- define ArrayGetBoolMember
- define ArrayGetDoubleMember
- define EndTraverse
- define EndIf
- define EndParserArray
- define EndJSonParser
- 目录
例子:
1、生成JSon字符串
BeginJSonor();
JSonorString(_T(“JobID”), CString(lpszId));
JSonorString(_T(“JobPath”), CString(srtPath));
JSonorInt(_T(“JobPage”), page);
JSonorDouble(_T(“JobProgress”) ,rate);
EndJSonor();
2、解析JSon字符串
BeginJSonParser()
if (!JSonParse(strJSonText))
{
if(JSonHasMember(_T(“JobID”) && JSonHasMember(“JobPath”))
{
CString strJobId = CString(JSonGetString(_T(“JobID”)));
CString strJobPath = CString(JSonGetString(_T(“JobPath”)));
}
if(JSonHasMember(_T(“JobPage”) && JSonHasMember(_T(“JobProgress”)))
{
int Page = JSonGetInt(_T(“JobPage”));
double progress = JSonGetDouble(_T(“JobProgress”));
}
}
EndJSonParser()
说明:
此宏定义适合简单的json字符串,太复杂容易出错。简单总结下,希望以后还能用到。
- rapidjson宏定义封装
- rapidjson 简单封装
- RapidJSON的一些方便操作的宏定义
- rapidjson
- rapidjson对Writer的小小封装,方便使用
- 【RapidJson】Rapidjson解析
- 如何使用rapidjson库进行json格式的封装及解析
- C++ 封装RapidJson把一个类Json序列化和反序列化
- C++ 封装RapidJson把一个类Json序列化和反序列化
- protel99 封装定义
- JAVA 封装的定义
- linux下可变参数及宏定义封装函数
- snprintf连续打印封装:可变参数的宏定义
- rapidjson使用
- rapidjson 使用
- RapidJSON简介
- rapidjson 解析
- RapidJSON 介绍
- 文本关键词提取算法及自动摘要
- linux下C发送HttpPost请求
- 使用cmd命令运行带有jar(架包)的Java程序
- JConsole使用手册详解
- IO流删除带内容的目录
- rapidjson宏定义封装
- PyGobject(十)布局容器之Button篇——Gtk.CheckButton
- ubuntu14.04命令行直接安装jdk适合新手
- 走遍非洲 —— 埃及
- eclipse下新建hadoop项目
- Linux /proc/cpuinfo
- c语言socket编程(基础)
- Java 加密解密技术学习之BASE64
- controller中request变量的用法