#include "cJSON.h"
#include <string>
#include <iostream>
using namespace std;
//cJSON源码https://download.csdn.net/download/weixin_44747201/19872284?spm=1001.2014.3001.5501
int _tmain(int argc, _TCHAR* argv[])
{
FILE *f;//输入文件
long len;//文件长度
char *content;//文件内容
cJSON *json;//封装后的json对象
f=fopen("./1.json","rb");
fseek(f,0,SEEK_END);
len=ftell(f);
fseek(f,0,SEEK_SET);
content=(char*)malloc(len+1);
fread(content,1,len,f);
fclose(f);
//读
json=cJSON_Parse(content);
if (!json) {
printf("Error before: [%s]\n",cJSON_GetErrorPtr());
}
Enter jsonTest;
char *out=cJSON_Print(json);
cJSON* Mechanism = cJSON_GetObjectItem(json,"Mechanism");//获取Mechanism对象
cJSON* application = cJSON_GetArrayItem(Mechanism->child,0); //获取Mechanism第一个子对象application
printf("jsonName:%s jsonValue:%s\n",application->string,application->valuestring);
cJSON* PropagateChain = cJSON_GetArrayItem(Mechanism->child,6);
printf("jsonName:%s jsonValue:%s\n",PropagateChain->string,application->valuestring); //获取Mechanism第7个子对象PropagateChain
//PropagateChain是一个数组对象
int array_size=cJSON_GetArraySize(PropagateChain->child);
cJSON* item4 = cJSON_GetArrayItem(PropagateChain->child->next, 4); //获取PropagateChain第2个子对象第5个子对象ClassB
printf("jsonName:%s jsonValue:%s\n",item4->string,item4->valuestring);
//写接口比较简单不赘述
cJSON *partInfo = cJSON_CreateObject();
cJSON_AddStringToObject(partInfo,"key","value");
char *out;
out = cJSON_Print(partInfo);//转字符串
return 0;
}
1.json文件
{
"Mechanism": [
{
"application": "aaaa",
"behavior": "bbbb",
"method": "cccc",
"class": "",
"context": "",
"type": "",
"PropagateChain": [
{
"ClassA": "",
"RoleA": "",
"BehaviorA": "",
"MethodA": ""
},
{
"ClassA": "",
"RoleA": "",
"BehaviorA": "",
"MethodA": "",
"ClassB": "",
"RoleB": ""
},
{
"ClassA": "",
"RoleA": "",
"BehaviorA": "",
"MethodA": "",
"ClassB": "",
"RoleB": ""
}
]
},
{
"application": "",
"behavior": "",
"method": "",
"class": "",
"context": "",
"type": "",
"PropagateChain": [
{
"ClassA": "",
"RoleA": "",
"BehaviorA": "",
"MethodA": "",
"ClassB": "",
"RoleB": "",
"BehaviorB": ""
}
]
}
]
}