C言語cJson簡単入門使用
3931 ワード
jsonは以下のフォーマットのデータです
各層はkeyとvalueに対応する
次に、cJsonオープンソースキットを使用してjson形式のデータを作成する方法を示します.
使用するときは3つのファイルしか必要ありません.cJSON.h, cJSON.cと使用するファイル、
コンパイルコマンド、-lmは数学ライブラリをリンクする必要があることを示します
次のコードはjsonファイルを読み込み、解析を完了します.
{
" ": {
"factory": " ",
"last": 31,
"price": 83,
"sell": 49,
"sum": 80,
"other": [123, 1, "hello, world", {
" ": " , "
}]
}
}
各層はkeyとvalueに対応する
次に、cJsonオープンソースキットを使用してjson形式のデータを作成する方法を示します.
#include
#include
#include "cJSON.h"
int main()
{
//
cJSON* obj = cJSON_CreateObject();
//
cJSON* subObj = cJSON_CreateObject();
// key-value
cJSON_AddItemToObject(subObj, "factory", cJSON_CreateString(" "));
cJSON_AddItemToObject(subObj,"last",cJSON_CreateNumber(31));
cJSON_AddItemToObject(subObj,"price",cJSON_CreateNumber(83));
cJSON_AddItemToObject(subObj,"sell",cJSON_CreateNumber(49));
cJSON_AddItemToObject(subObj,"sum",cJSON_CreateNumber(80));
// json
cJSON* array = cJSON_CreateArray();
cJSON_AddItemToArray(array,cJSON_CreateNumber(123));
cJSON_AddItemToArray(array,cJSON_CreateNumber(1));
cJSON_AddItemToArray(array,cJSON_CreateString("hello, world"));
//
cJSON* subsub= cJSON_CreateObject();
cJSON_AddItemToObject(subsub," ",cJSON_CreateString(" , "));
cJSON_AddItemToObject(subObj,"other",array);
// obj key_value
cJSON_AddItemToObject(obj," ", subObj);
//
char* data = cJSON_Print(obj);
FILE *fp = fopen("car.json","w");
fwrite(data,sizeof(char),strlen(data)+1,fp);
fclose(fp);
return 0;
}
使用するときは3つのファイルしか必要ありません.cJSON.h, cJSON.cと使用するファイル、
コンパイルコマンド、-lmは数学ライブラリをリンクする必要があることを示します
gcc create.c cJSON.c -o create -lm
次のコードはjsonファイルを読み込み、解析を完了します.
#include
#include
#include "cJSON.h"
int main()
{
FILE* fp = fopen("car.json", "r");
char buf[1024] = {0};
fread(buf, 1, sizeof(buf), fp);
cJSON* root = cJSON_Parse(buf);
cJSON* subobj = cJSON_GetObjectItem(root," ");
if(subobj){
//
cJSON* fasctory = cJSON_GetObjectItem(subobj,"factory");
cJSON* last = cJSON_GetObjectItem(subobj,"last");
cJSON* price = cJSON_GetObjectItem(subobj, "price");
cJSON* sell = cJSON_GetObjectItem(subobj,"sell");
cJSON* sum = cJSON_GetObjectItem(subobj,"sum");
cJSON* other = cJSON_GetObjectItem(subobj,"other");
// value
printf(" :
");
printf(" factor: %s
",cJSON_pRINT(fasctory));
printf(" last: %s
",cJSON_pRINT(last));
printf(" price: %s
",cJSON_pRINT(price));
printf(" sell: %s
",cJSON_pRINT(sell));
printf(" sum: %s
",cJSON_pRINT(sum));
//
printf(" other:
");
if(other->type == cJSON_Array){
for(int i=0;itype == cJSON_String){
printf(" %s
",node->valuestring);
}
if(node->type == cJSON_Number){
printf(" %s
",node->valueint);
}
if(node->type == cJSON_True){
printf(" %s
",node->valueint);
}
if(node->type == cJSON_False){
printf(" %s
",node->valueint);
}
}
}
cJSON_Delete(root);
fclose(fp);
}
}