业内性能最高、最稳定的Json SDK开发包

xiaoxiao2021-02-27  242

 

1   概述

本文档适用于C语言开发人员,文档详细讲述Json解析器SDK中每个函数的

用法以及源码示例。

 

2    Json介绍

参考相关文档。

 

3    Json 解析器SDK技术特点

支持以下功能:

1、支持标准Json语法文档

 

其他说明:

1、支持任意层次的嵌套

2、支持解析Json文档的大小没有限制

3、解析效率高

4、函数简介易用

5、支持windows、linux、unix等操作系统,支持32位和64位开发平台

6、提供基于c语言的开发SDK

 

4   Json解析器应用场景

1、需要高效解析Json文档

 

5   定义说明

1、HJSONDOM

   指向一个Json文档的句柄,即指向Json文档的指针,定义如下:

   typedef void* HJSONDOM;

 

2、HJSONODE

   HJSONNODE定义为一个指向Json节点的指针,定义如下:

    typedef void* HJSONNODE;

 

 

3、根节点

每个Xml文档都有唯一一个根节点,此根节点是内部使用,用于获取用户定义的子节点。根节点是特殊的节点,没有属性和值。

 

4、节点

每个节点拥有名字、值、子节点链表。

 

6、头子节点

每个节点拥有的子节点链表的第一个子节点。

 

7、尾子节点

每个节点拥有的子节点链表的最后一个子节点。

 

8、上一节点

相当于当前节点所在的节点链表中的上一个相邻节点

 

9、下一节点

相当于当前节点所在的节点链表中的下一个相邻节点

 

6    Json解析器SDK功能函数

6.1  JsonCreateDom()

 

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;

}

 

6.2  JsonGetErrorStartPos()

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;

}

 

6.3  JsonDestroyDom()

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;

}

 

6.4    JsonGetRoot()

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;

}

      

6.5    JsonGetHeadNode()

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;

}

      

6.6    JsonGetNextNode ()

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;

}

 

6.7    JsonGetPrevNode()

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;

}

 

6.8    JsonGetTailNode ()

1、功能说明

此函数用来返回指定Json节点的尾子节点句柄。

 

2、函数原型

HJSONNODE JsonGetHeadNode(HJSONNODEhNode);

 

3、参数说明

   1)HJSONNODE hNode

      输入参数,指定Json节点句柄。

 

4、返回值

    返回hNode节点尾子节点的句柄。如果hNode没有子节点返回NULL,否则返

回非NULL的句柄。

  

5、相关函数  

JsonGetHeadNode()

JsonGetNextNode()

JsonGetPrevNode()

 

6.9    JsonGetChildNodeByIndex()

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;

}

 

6.10      JsonGetChildNodeByName()

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;

}

 

 

6.11      JsonGetChildNodeValueByName()

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;

}

 

 

6.12      JsonGetChildCount()

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;

}

 

6.13      JsonGetParentNode ()

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;

}

 

6.14      JsonGetNodeName()

1、功能说明

此函数用来根据节点句柄获取节点的名字。

 

2、函数原型

char* JsonGetNodeName(HJSONNODE hNode);

 

3、参数说明

   1)HJSONNODE hNode

      输入参数,指定的节点句柄。

 

4、返回值

    返回节点的名字。

  

5、相关函数  

JsonGetNodeValue()

 

示例:

6.15      JsonGetNodeValue()

1、功能说明

此函数用来根据节点句柄获取节点的值。

 

2、函数原型

char* JsonGetNodeValue(HJSONNODE hNode);

 

3、参数说明

   1)HJSONNODE hNode

      输入参数,指定的节点句柄。

 

4、返回值

    返回节点的值。

  

5、相关函数  

  JsonGetNodeName()

 

6.16      JsonGetChildValueByPath()

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;

}

 

 

7   Json生成器SDK功能函数

7.1  JsonCreateDom()

 

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;

}

 

7.2  JsonCreateObject()

 

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;

}

 

7.3  JsonCreateArray()

 

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;

}

 

7.4  JsonCreatePeer()

 

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;

}

 

7.5  JsonGetText()

 

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;

}

 

 

转载请注明原文地址: https://www.6miu.com/read-6064.html

最新回复(0)