本文档适用于C语言开发人员,文档详细讲述Json解析器SDK中每个函数的
用法以及源码示例。
参考相关文档。
支持以下功能:
1、支持标准Json语法文档
其他说明:
1、支持任意层次的嵌套
2、支持解析Json文档的大小没有限制
3、解析效率高
4、函数简介易用
5、支持windows、linux、unix等操作系统,支持32位和64位开发平台
6、提供基于c语言的开发SDK
1、需要高效解析Json文档
1、HJSONDOM
指向一个Json文档的句柄,即指向Json文档的指针,定义如下:
typedef void* HJSONDOM;
2、HJSONODE
HJSONNODE定义为一个指向Json节点的指针,定义如下:
typedef void* HJSONNODE;
3、根节点
每个Xml文档都有唯一一个根节点,此根节点是内部使用,用于获取用户定义的子节点。根节点是特殊的节点,没有属性和值。
4、节点
每个节点拥有名字、值、子节点链表。
6、头子节点
每个节点拥有的子节点链表的第一个子节点。
7、尾子节点
每个节点拥有的子节点链表的最后一个子节点。
8、上一节点
相当于当前节点所在的节点链表中的上一个相邻节点
9、下一节点
相当于当前节点所在的节点链表中的下一个相邻节点
1、功能说明
此函数用来解析Json文本,执行成功后返回DOM句柄,之后对此DOM的操作都引用此句柄。
2、函数原型
int JsonCreateDom(char* sJson, HJSONDOM&hDom);
3、参数说明
1)char* sJson
输入参数。是\0结尾的Json字符串。
2)HJSONDOM hDom
输出参数。返回非NULL的句柄。
4、返回值
执行成功返回0,执行失败时返回非0。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
if(nRet == 0)
{
printf(“解析Json成功”);
}
else
{
printf(“解析Json失败”);
}
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来获取解析Json文档出错的开始位置。
2、函数原型
char* JsonGetErrorStartPos(HJSONDOMhDom);
3、参数说明
1)HJSONDOM hDom
输入参数,hDom是执行JsonCreateDom函数返回的句柄。
4、返回值
当执行JsonCreateDom是由于解析Json失败时,通过此函数返回解析失败
时的位置指针,可以通过此指针判断解析失败的原因。
5、相关函数
JsonCreateDom()
JsonDestroyDom()
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID””133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
if(nRet == 0)
{
printf(“解析Json成功”);
}
else
{
printf(“解析Json失败: %s”, JsonGetErrorStartPos(hDom));
}
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来销毁DOM,删除后的DOM句柄不能再被引用。
2、函数原型
void JsonDestroyTree(HJSONDOM hDom);
3、参数说明
1)HJSONDOM hDom
输入参数,hDom是执行JsonCreateDom函数返回的句柄。
4、返回值
无
5、相关函数
JsonCreateDom()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
if(nRet == 0)
{
printf(“解析Json成功”);
}
else
{
printf(“解析Json失败”);
}
XmlDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来获取DOM的根节点,根节点是访问DOM的入口,根节点是特殊节点,没有节点名字,没有父节点,只有子节点链表。
2、函数原型
HJSONNODE JsonGetRoot(HJSONDOM hDom);
3、参数说明
1)HJSONDOM hDom
输入参数,hDom是执行JsonCreateDom函数返回的句柄。
4、返回值
返回非NULL的Json节点句柄。
5、相关函数
JsonCreateDom()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HJSONDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Json失败”);
goto Exit;
}
HJSONNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来返回指定Json节点的头子节点句柄。
2、函数原型
HJSONNODE JsonGetHeadNode(HJSONNODEhNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定Json节点句柄。
4、返回值
返回hNode节点头子节点的句柄。如果hNode没有子节点返回NULL,否则返
回非NULL的句柄。
5、相关函数
JsonGetTailNode()
JsonGetNextNode()
JsonGetPrevNode()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Json失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNode;
hNode = XmlGetHeadNode(hRootNode);
char* sName;
sName = JsonGetNodeName(hNode);
printf(“%s”, sName);
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来返回指定节点的下一个节点,这两个节点拥有同一个父节点。
2、函数原型
HJSONNODE JsonGetNextNode(HJSONNODEhNode);
3、参数说明
1)HJSONNODE hNode
输入参数,hNode为指定的当前节点。
4、返回值
返回节点句柄,如果当前节点已经是最后的尾节点则返回NULL,否则返回非
NULL的句柄。
5、相关函数
JsonGetHeadNode()
JsonGetPrevNode()
JsonGetTailNode()
示例:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Json失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
HXMLNODE hNodeB;
hNodeB = JsonGetHeadNode(hNodeA);
while(nNodeB != NULL)
{
printf(“%s”, JsonGetNodeName(nNodeB));
hNodeB = JsonGetNextNode(hNodeB);
}
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来返回指定节点的上一个节点,这两个节点拥有同一个父节点。
2、函数原型
HJSONNODE JsonGetPrevNode(HJSONNODEhNode);
3、参数说明
1)HJSONNODE hNode
输入参数,hNode为指定的当前节点。
4、返回值
返回节点句柄,如果当前节点已经是头节点则返回NULL,否则返回非。
NULL的句柄。
5、相关函数
JsonGetHeadNode()
JsonGetNextNode()
JsonGetTailNode()
示例:参考AvlGetHeadPosition
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Json失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
HXMLNODE hNodeB;
hNodeB = JsonGetTailNode(hNodeA);
while(nNodeB != NULL)
{
printf(“%s”, JsonGetNodeName(nNodeB));
hNodeB = JsonGetPrevNode(hNodeB);
}
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来返回指定Json节点的尾子节点句柄。
2、函数原型
HJSONNODE JsonGetHeadNode(HJSONNODEhNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定Json节点句柄。
4、返回值
返回hNode节点尾子节点的句柄。如果hNode没有子节点返回NULL,否则返
回非NULL的句柄。
5、相关函数
JsonGetHeadNode()
JsonGetNextNode()
JsonGetPrevNode()
1、功能说明
此函数返回指定名字的子节点。
2、函数原型
HJSONNODE JsonGetChildNodeByName(HJSONNODEhNode,size_t nIndex);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
2) size_t nIndex
输入参数,要获取子节点的索引下标,从0开始。
4、返回值
非NULL:找到指定名字的节点。
NULL:没有找到指定名字的节点。
5、相关函数
XmlGetSingleChildNode()
示例1:
char* g_sXmlText =
“<PeronInfo>\r\n\
<CardID>133552197410282628</CardID>\r\n\
<Name>zhangsan</Name>\r\n\
<PastName>zhangyi</PastName>\r\n\
<PastName>zhanger</PastName>\r\n\
<PastName>zhangsi</PastName>\r\n\
<PastName>zhangwu</PastName>\r\n\
<PastName>zhangliu</PastName>\r\n\
<PastName>zhangqi</PastName>\r\n\
<Age>28</Age>\r\n\
<Sex>Male</Sex>\r\n\
</PeronInfo>”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
HXMLNODE hNodeArray[16];
int nCount;
nCount = JsonGetChildNodeByIndex(hNodeA, “PassName”,16, hNodeArray);
int i;
for(i = 0; i < nCount; i++)
{
printf(“%s”, JsonGetNodeValue(hNodeArray[i]));
}
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数返回指定名字的子节点。
2、函数原型
HJSONNODE JsonGetChildNodeByName(HJSONNODEhNode,char* sName);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
2) char* sName
输入参数,要获取子节点的名字,注意区分大小写。
4、返回值
非NULL:找到指定名字的节点。
NULL:没有找到指定名字的节点。
5、相关函数
JsonGetSingleChildNode()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
HXMLNODE hNodeArray[16];
int nCount;
nCount = JsonGetChildNode(hNodeA, “PassName”,16, hNodeArray);
int i;
for(i = 0; i < nCount; i++)
{
printf(“%s”, JsonGetNodeValue(hNodeArray[i]));
}
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数返回指定名字的子节点。
2、函数原型
bool JsonGetChildNodeByName(HJSONNODEhNode,char* sName,
Char*& sValue);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
2) char* sName
输入参数,要获取子节点的名字,注意区分大小写。
3) char*& sValue
输出参数,返回节点的值。
4、返回值
true:找到指定名字的节点。
false:没有找到指定名字的节点。
5、相关函数
XmlGetSingleChildNode()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
HXMLNODE hNodeArray[16];
int nCount;
nCount = JsonGetChildNode(hNodeA, “PassName”,16, hNodeArray);
int i;
for(i = 0; i < nCount; i++)
{
printf(“%s”, JsonGetNodeValue(hNodeArray[i]));
}
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数返回指定节点的子节点数量。
2、函数原型
int JsonGetChildCount(HJSONNODE hNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
4、返回值
返回子节点的数量,大于等于0。
5、相关函数
JsonGetChildNode()
示例:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
printf(“%d”, JsonGetChildCount(hNodeA));
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数返回指定节点的父节点。
2、函数原型
HJSONNODE JsonGetParentNode(HJSONNODEhNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
4、返回值
返回节点的父节点的句柄,注意只有根节点没有父节点,其他节点都有一个
非NULL的父节点。
5、相关函数
JsonGetChildNode()
示例:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = JsonGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = JsonGetHeadNode(hRootNode);
printf(“%d”, JsonGetNodeName(hNodeA));
HXMLNODE hNodeB;
hNodeB = JsonGetHeadNode(hNodeA);
printf(“%d”, JsonGetNodeName(hNodeB));
HXMLNODE hNodeC;
hNodeC = JsonGetParentNode(hNodeB);
printf(“%d”, JsonGetNodeName(hNodeC));
Exit:
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来根据节点句柄获取节点的名字。
2、函数原型
char* JsonGetNodeName(HJSONNODE hNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
4、返回值
返回节点的名字。
5、相关函数
JsonGetNodeValue()
示例:
1、功能说明
此函数用来根据节点句柄获取节点的值。
2、函数原型
char* JsonGetNodeValue(HJSONNODE hNode);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
4、返回值
返回节点的值。
5、相关函数
JsonGetNodeName()
1、功能说明
此函数根据节点的路径返回节点值,路径可以是节点名称或者索引下标。
2、函数原型
bool JsonGetChildValueByPath(HJSONNODEhNode,size_t nIndex);
3、参数说明
1)HJSONNODE hNode
输入参数,指定的节点句柄。
2) size_t nIndex
输入参数,要获取子节点的索引下标,从0开始。
4、返回值
非NULL:找到指定名字的节点。
NULL:没有找到指定名字的节点。
5、相关函数
XmlGetChildNode()
示例1:
#include “JsonAPI.h"
char* g_sJsonText =
“{\r\n\
“CardID”:”133552197410282628”,\r\n\
“Name”:”zhangsan”,\r\n\
“Age”:”28”,\r\n\
“Sex”:”Male”,\r\n\
}”;
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = XmlCreateDom(g_sJsonText , hDom);
{
printf(“解析Xml失败”);
goto Exit;
}
HXMLNODE hRootNode;
hRootNode = XmlGetRoot(hDom);
HXMLNODE hNodeA;
hNodeA = XmlGetHeadNode(hRootNode);
HXMLNODE hNodeArray[16];
int nCount;
nCount = XmlGetChildNode(hNodeA, “PassName”,16, hNodeArray);
int i;
for(i = 0; i < nCount; i++)
{
printf(“%s”, XmlGetNodeValue(hNodeArray[i]));
}
Exit:
XmlDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来生成Json文本,执行成功后返回DOM句柄,之后对此DOM的操作都引用此句柄。
2、函数原型
int JsonCreateDom(char* sJson, HJSONDOM&hDom);
3、参数说明
3)char* sJson
输入参数。 生成Json此参数必须为NULL。
4)HJSONDOM hDom
输出参数。返回非NULL的句柄。
4、返回值
执行成功返回0,执行失败时返回非0。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
int main(int argc, char* argv[])
{
int nRet;
HXMLDOM hDom;
nRet = JsonCreateDom(NULL, hDom);
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来生成一个对象节点。
2、函数原型
int JsonCreateObject(HJSONDOM hDom,HJSONNODE hNode, char* sName);
3、参数说明
1)HJSONDOM hDom
输入参数。
2)HJSONNODE hNode
输入参数。要生成节点的父节点。
3)char* sName
输入参数。要生成节点的名字。
如果此值为NULL,则为数组节点生成简单的序列,例如:
[{……},{……},{……}];否则是以下形式:
“PersonInfo”:{……}
4、返回值
返回生成的子节点句柄。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
int main(int argc, char* argv[])
{
HJSONDOM hDom;
JsonCreateDom(NULL, hDom);
HJSONNODE hRootNode;
hRootNode = JsonCreateRoot(hDom, true);
HJSONNODE hNodeA;
hNodeA = JsonCreateObject(hDom,hRootNode, "notify_trade");
JsonCreatePeer(hDom, hNodeA,"topic", "trade", true);
JsonCreatePeer(hDom, hNodeA,"status", pInfo->sStatus, true);
JsonCreatePeer(hDom, hNodeA,"user_id", pInfo->sUserID, true);
JsonCreatePeer(hDom, hNodeA,"nick", pInfo->sNick, true);
JsonCreatePeer(hDom, hNodeA,"modified", pInfo->sModifiedDate, true);
JsonCreatePeer(hDom, hNodeA,"buyer_nick", pInfo->sBuyerNick, true);
JsonCreatePeer(hDom, hNodeA,"payment", pInfo->sPayment, true);
JsonCreatePeer(hDom, hNodeA,"oid", pInfo->sOID, true);
JsonCreatePeer(hDom, hNodeA,"is_3D", "true", false);
JsonCreatePeer(hDom, hNodeA,"tid", pInfo->sTID, true);
JsonCreatePeer(hDom, hNodeA,"type", pInfo->sType, true);
JsonCreatePeer(hDom, hNodeA,"seller_nick", pInfo->sSellerNick, true);
char sJson[1024*8]
JsonGetText(hDom, sJson);
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来生成一个数组节点。
2、函数原型
int JsonCreateArray(HJSONDOM hDom,HJSONNODE hNode, char* sName);
3、参数说明
1)HJSONDOM hDom
输入参数。
2)HJSONNODE hNode
输入参数。要生成节点的父节点。
3)char* sName
输入参数。要生成节点的名字。
如果此值为NULL,则为数组节点生成简单的序列,例如:
[[……],[……],[……}];否则是以下形式:
“PersonList”:[……]
4、返回值
返回生成的子节点句柄。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
int main(int argc, char* argv[])
{
HJSONDOM hDom;
JsonCreateDom(NULL, hDom);
HJSONNODE hRootNode;
hRootNode = JsonCreateRoot(hDom, true);
HJSONNODE hNodeA;
hNodeA = JsonCreateObject(hDom,hRootNode, "notify_trade");
JsonCreatePeer(hDom, hNodeA,"topic", "trade", true);
JsonCreatePeer(hDom, hNodeA,"status", pInfo->sStatus, true);
JsonCreatePeer(hDom, hNodeA,"user_id", pInfo->sUserID, true);
JsonCreatePeer(hDom, hNodeA,"nick", pInfo->sNick, true);
JsonCreatePeer(hDom, hNodeA,"modified", pInfo->sModifiedDate, true);
JsonCreatePeer(hDom, hNodeA,"buyer_nick", pInfo->sBuyerNick, true);
JsonCreatePeer(hDom, hNodeA,"payment", pInfo->sPayment, true);
JsonCreatePeer(hDom, hNodeA,"oid", pInfo->sOID, true);
JsonCreatePeer(hDom, hNodeA,"is_3D", "true", false);
JsonCreatePeer(hDom, hNodeA,"tid", pInfo->sTID, true);
JsonCreatePeer(hDom, hNodeA,"type", pInfo->sType, true);
JsonCreatePeer(hDom, hNodeA,"seller_nick", pInfo->sSellerNick, true);
char sJson[1024*8]
JsonGetText(hDom, sJson);
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来生成一个名字值对或者数组中的值。例如以下形式:
1) “name”:”bill”
2) “name”:bill
3) “age”:30
4) [“13912345678”,”13912345677”,”13912345676”]
5) [13912345678,13912345677,13912345676]
2、函数原型
int JsonCreatePeer (HJSONDOM hDom, HJSONNODEhNode, char* sName,
char* sValue, bool bDQM);
3、参数说明
1)HJSONDOM hDom
输入参数。
2)HJSONNODE hNode
输入参数。要生成节点的父节点。
3)char* sName
输入参数。要生成节点的名字。
如果此值为NULL,则为数组节点生成简单的值序列,例如:
[“13912345678”,”13912345677”,”13912345676”]
否则是以下形式:
{“name”:”bill”,”age”:31}
4)char* sValue
输入参数。要生成节点的值。
5)bool bDQM
输入参数。要生成节点的值是否要双引号。
true: “age”:”30”
false: “age”:30
4、返回值
返回生成的子节点句柄。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
int main(int argc, char* argv[])
{
HJSONDOM hDom;
JsonCreateDom(NULL, hDom);
HJSONNODE hRootNode;
hRootNode = JsonCreateRoot(hDom, true);
HJSONNODE hNodeA;
hNodeA = JsonCreateObject(hDom, hRootNode,"notify_trade");
JsonCreatePeer(hDom, hNodeA,"topic", "trade", true);
JsonCreatePeer(hDom, hNodeA,"status", pInfo->sStatus, true);
JsonCreatePeer(hDom, hNodeA,"user_id", pInfo->sUserID, true);
JsonCreatePeer(hDom, hNodeA,"nick", pInfo->sNick, true);
JsonCreatePeer(hDom, hNodeA,"modified", pInfo->sModifiedDate, true);
JsonCreatePeer(hDom, hNodeA,"buyer_nick", pInfo->sBuyerNick, true);
JsonCreatePeer(hDom, hNodeA,"payment", pInfo->sPayment, true);
JsonCreatePeer(hDom, hNodeA,"oid", pInfo->sOID, true);
JsonCreatePeer(hDom, hNodeA,"is_3D", "true", false);
JsonCreatePeer(hDom, hNodeA,"tid", pInfo->sTID, true);
JsonCreatePeer(hDom, hNodeA,"type", pInfo->sType, true);
JsonCreatePeer(hDom, hNodeA,"seller_nick", pInfo->sSellerNick, true);
char sJson[1024*8]
JsonGetText(hDom, sJson);
JsonDestroyDom(hDom);
return 0;
}
1、功能说明
此函数用来导出Json文本。
2、函数原型
int JsonCreatePeer (HJSONDOM hDom, HJSONNODEhNode, char* sName,
char* sValue, bool bDQM);
3、参数说明
1)HJSONDOM hDom
输入参数。
2)char* sName
4、返回值
返回生成的子节点句柄。
5、相关函数
JsonDestroyDom(HJSONDOM& hDom)
示例:
#include “JsonAPI.h"
int main(int argc, char* argv[])
{
HJSONDOM hDom;
JsonCreateDom(NULL, hDom);
HJSONNODE hRootNode;
hRootNode = JsonCreateRoot(hDom, true);
HJSONNODE hNodeA;
hNodeA = JsonCreateObject(hDom, hRootNode,"notify_trade");
JsonCreatePeer(hDom, hNodeA, "topic", "trade",true);
JsonCreatePeer(hDom, hNodeA, "status", pInfo->sStatus,true);
JsonCreatePeer(hDom, hNodeA, "user_id",pInfo->sUserID, true);
JsonCreatePeer(hDom, hNodeA, "nick", pInfo->sNick,true);
JsonCreatePeer(hDom, hNodeA, "modified",pInfo->sModifiedDate, true);
JsonCreatePeer(hDom, hNodeA, "buyer_nick",pInfo->sBuyerNick, true);
JsonCreatePeer(hDom, hNodeA, "payment",pInfo->sPayment, true);
JsonCreatePeer(hDom, hNodeA, "oid", pInfo->sOID,true);
JsonCreatePeer(hDom, hNodeA, "is_3D", "true",false);
JsonCreatePeer(hDom, hNodeA, "tid", pInfo->sTID,true);
JsonCreatePeer(hDom, hNodeA, "type", pInfo->sType,true);
JsonCreatePeer(hDom, hNodeA, "seller_nick",pInfo->sSellerNick, true);
char sJson[1024*8];
JsonGetText(hDom, sJson);
JsonDestroyDom(hDom);
return 0;
}