// cJsonDemo.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "cJSON.h"
#include <windows.h>
/*
"semantic": {
"slots": {
"name": "张三"
}
},
"type": 0;
"operation" : "CALL",
"service" : "telephone",
"text" : "大家好"
"children": [{
"name": "May",
"age": 2
}, {
"name": "Kendy",
"age": 3
}, {
"name": "Mark",
"age": 1
}]
}
*/
cJSON * createJson()
{
cJSON * root = cJSON_CreateObject();
cJSON * semtRoot = cJSON_CreateObject();
cJSON * slotRoot = cJSON_CreateObject();
cJSON_AddItemToObject(slotRoot, "name", cJSON_CreateString("张三"));
cJSON_AddItemToObject(semtRoot, "slots", slotRoot);
//cJSON_AddItemToObject(semtRoot,
cJSON_AddItemToObject(root, "semantic", semtRoot);
cJSON_AddItemToObject(root, "operation", cJSON_CreateString("CALL"));
cJSON_AddItemToObject(root, "type", cJSON_CreateNumber(0));
cJSON_AddItemToObject(root, "service", cJSON_CreateString("telephone"));
cJSON_AddItemToObject(root, "text", cJSON_CreateString("大家好"));
cJSON *childArray = cJSON_CreateArray();
cJSON *child1 = cJSON_CreateObject();
cJSON *child2 = cJSON_CreateObject();
cJSON *child3 = cJSON_CreateObject();
cJSON_AddItemToObject(child1, "name", cJSON_CreateString("May"));
cJSON_AddItemToObject(child1, "age", cJSON_CreateNumber(3));
cJSON_AddItemToObject(child2, "name", cJSON_CreateString("Kendy"));
cJSON_AddItemToObject(child2, "age", cJSON_CreateNumber(2));
cJSON_AddItemToObject(child3, "name", cJSON_CreateString("Mark"));
cJSON_AddItemToObject(child3, "age", cJSON_CreateNumber(1));
cJSON_AddItemToArray(childArray, child1);
cJSON_AddItemToArray(childArray, child2);
cJSON_AddItemToArray(childArray, child3);
cJSON_AddItemToObject(root, "children", childArray);
//printf("%s\n", cJSON_Print(root));
return root;
}
void parseJson(char * cPtr)
{
cJSON* root = cJSON_Parse(cPtr);
cJSON * typeJson = cJSON_GetObjectItem(root, "type");
int nType = typeJson->valueint;
cJSON * operJson = cJSON_GetObjectItem(root, "operation");
char *oper = operJson->valuestring;
cJSON * serJson = cJSON_GetObjectItem(root, "service");
cJSON * txtJson = cJSON_GetObjectItem(root, "text");
cJSON * semJson = cJSON_GetObjectItem(root, "semantic");
cJSON * slotsJson = cJSON_GetObjectItem(semJson, "slots");
char *nam = cJSON_GetObjectItem(slotsJson, "name")->valuestring;
cJSON *childArr = cJSON_GetObjectItem(root, "children");
int nChildSize = cJSON_GetArraySize(childArr);
cJSON* temp;
for (int i = 0; i < nChildSize; i++)
{
temp = cJSON_GetArrayItem(childArr, i);
char *name = cJSON_GetObjectItem(temp, "name")->valuestring;
int age = cJSON_GetObjectItem(temp, "age")->valueint;
//printf("%d", age);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
cJSON* root = createJson();
printf("%s\n", cJSON_Print(root));
parseJson(cJSON_Print(root));
Sleep(10000);
cJSON_Delete(root);
return 0;
}