加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cJSON源码里的例子

发布时间:2020-12-16 19:06:34 所属栏目:百科 来源:网络整理
导读:这是cJSON源码里的例子,我觉得非常全面就贴出来留作备案.方便查找. #include stdio.h #include stdlib.h #include "cJSON.h" //#include "cJSON.c" 也可以包含C文件,就不使用库了. /* Parse text to JSON,then render back to text,and print! */ void doit(

这是cJSON源码里的例子,我觉得非常全面就贴出来留作备案.方便查找.


#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
//#include "cJSON.c" 也可以包含C文件,就不使用库了.

/* Parse text to JSON,then render back to text,and print! */
void doit(char *text)
{
char *out;cJSON *json;

json=cJSON_Parse(text);
if (!json) {printf("Error before: [%s]n",cJSON_GetErrorPtr());}
else
{
out=cJSON_Print(json);
cJSON_Delete(json);
printf("%sn",out);
free(out);
}
}

/* Read a file,parse,render back,etc. */
void dofile(char *filename)
{
FILE *f=fopen(filename,"rb");
fseek(f,SEEK_END);
long len=ftell(f);
fseek(f,SEEK_SET);
char *data=(char*)malloc(len+1);
fread(data,1,len,f);
fclose(f);
doit(data);
free(data);
}


/* U example datatype. */

struct record {const char *precision;double lat,lon;const char *address,*city,*state,*zip,*country; }; /* Create a bunch of objects as demonstration. */ void create_objects() { cJSON *root,*fmt,*img,*thm,*fld;char *out;int i; /* declare a few. */ /* Here we construct some JSON standards,from the JSON site. */ /* Our "Video" datatype: */ root=cJSON_CreateObject(); cJSON_AddItemToObject(root,"name",cJSON_CreateString("Jack ("Bee") Nimble")); cJSON_AddItemToObject(root,"format",fmt=cJSON_CreateObject()); cJSON_AddStringToObject(fmt,"type","rect"); cJSON_AddNumberToObject(fmt,"width",1920); cJSON_AddNumberToObject(fmt,"height",1080); cJSON_AddFalseToObject (fmt,"interlace"); cJSON_AddNumberToObject(fmt,"frame rate",24); out=cJSON_Print(root); cJSON_Delete(root); printf("%sn",out); free(out); /* Print to text,Delete the cJSON,print it,release the string. */ /* Our "days of the week" array: */ const char *strings[7]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; root=cJSON_CreateStringArray(strings,7); out=cJSON_Print(root); cJSON_Delete(root); printf("%sn",out); free(out); /* Our matrix: */ int numbers[3][3]={{0,-1,0},{1,{0,1}}; root=cJSON_CreateArray(); for (i=0;i<3;i++) cJSON_AddItemToArray(root,cJSON_CreateIntArray(numbers[i],3)); /* cJSON_ReplaceItemInArray(root,cJSON_CreateString("Replacement")); */ out=cJSON_Print(root); cJSON_Delete(root); printf("%sn",out); free(out); /* Our "gallery" item: */ int ids[4]={116,943,234,38793}; root=cJSON_CreateObject(); cJSON_AddItemToObject(root,"Image",img=cJSON_CreateObject()); cJSON_AddNumberToObject(img,"Width",800); cJSON_AddNumberToObject(img,"Height",600); cJSON_AddStringToObject(img,"Title","View from 15th Floor"); cJSON_AddItemToObject(img,"Thumbnail",thm=cJSON_CreateObject()); cJSON_AddStringToObject(thm,"Url","http:/*www.example.com/image/481989943"); cJSON_AddNumberToObject(thm,125); cJSON_AddStringToObject(thm,"100"); cJSON_AddItemToObject(img,"IDs",cJSON_CreateIntArray(ids,4)); out=cJSON_Print(root); cJSON_Delete(root); printf("%sn",out); free(out); /* Our array of "records": */ struct record fields[2]={ {"zip",37.7668,-1.223959e+2,"","SAN FRANCISCO","CA","94107","US"},{"zip",37.371991,-1.22026e+2,"SUNNYVALE","94085","US"}}; root=cJSON_CreateArray(); for (i=0;i<2;i++) { cJSON_AddItemToArray(root,fld=cJSON_CreateObject()); cJSON_AddStringToObject(fld,"precision",fields[i].precision); cJSON_AddNumberToObject(fld,"Latitude",fields[i].lat); cJSON_AddNumberToObject(fld,"Longitude",fields[i].lon); cJSON_AddStringToObject(fld,"Address",fields[i].address); cJSON_AddStringToObject(fld,"City",fields[i].city); cJSON_AddStringToObject(fld,"State",fields[i].state); cJSON_AddStringToObject(fld,fields[i].state); cJSON_AddStringToObject(fld,"Zip",fields[i].zip); cJSON_AddStringToObject(fld,"Country",fields[i].country); } /* cJSON_ReplaceItemInObject(cJSON_GetArrayItem(root,1),4)); */ out=cJSON_Print(root); cJSON_Delete(root); printf("%sn",out); free(out); } int main (int argc,const char * argv[]) { /* a bunch of json: */ char text1[]="{n"name": "Jack ("Bee") Nimble",n"format": {"type": "rect",n"width": 1920,n"height": 1080,n"interlace": false,"frame rate": 24n}n}"; char text2[]="["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]"; char text3[]="[n [0,0],n [1,n [0,1]n ]n"; char text4[]="{n "Image": {n "Width": 800,n "Height": 600,n "Title": "View from 15th Floor",n "Thumbnail": {n "Url": "http:/*www.example.com/image/481989943",n "Height": 125,n "Width": "100"n },n "IDs": [116,38793]n }n }"; char text5[]="[n {n "precision": "zip",n "Latitude": 37.7668,n "Longitude": -122.3959,n "Address": "",n "City": "SAN FRANCISCO",n "State": "CA",n "Zip": "94107",n "Country": "US"n },n {n "precision": "zip",n "Latitude": 37.371991,n "Longitude": -122.026020,n "City": "SUNNYVALE",n "Zip": "94085",n "Country": "US"n }n ]"; /* Process each json textblock by parsing,then rebuilding: */ // doit(text1); // doit(text2); // doit(text3); // doit(text4); // doit(text5); /* Parse standard testfiles: */ // dofile("./test1"); /* dofile("../../tests/test2"); */ /* dofile("../../tests/test3"); */ /* dofile("../../tests/test4"); */ /* dofile("../../tests/test5"); */ /* Now some samplecode for building objects concisely: */ // create_objects(); return 0; }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读