1
0
mirror of https://github.com/DaveGamble/cJSON synced 2025-01-12 01:39:46 +00:00

a few more README changes

This commit is contained in:
Kevin Branigan 2011-08-22 00:55:11 -04:00
parent b051ed05d7
commit 65de016c38

View File

@ -77,7 +77,7 @@ Want to change the framerate?
Back to disk? Back to disk?
char * rendered=cJSON_Print(root); char * rendered = cJSON_Print(root);
Finished? Delete the root (this takes care of everything else). Finished? Delete the root (this takes care of everything else).
@ -89,12 +89,12 @@ before you dereference them. If you want to see how you'd build this struct in c
cJSON *root,*fmt; cJSON *root,*fmt;
root = cJSON_CreateObject(); root = cJSON_CreateObject();
cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble")); cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject()); cJSON_AddItemToObject(root, "format", fmt = cJSON_CreateObject());
cJSON_AddStringToObject(fmt,"type", "rect"); cJSON_AddStringToObject(fmt, "type", "rect");
cJSON_AddNumberToObject(fmt,"width", 1920); cJSON_AddNumberToObject(fmt, "width", 1920);
cJSON_AddNumberToObject(fmt,"height", 1080); cJSON_AddNumberToObject(fmt, "height", 1080);
cJSON_AddFalseToObject (fmt,"interlace"); cJSON_AddFalseToObject (fmt, "interlace");
cJSON_AddNumberToObject(fmt,"frame rate", 24); cJSON_AddNumberToObject(fmt, "frame rate", 24);
Hopefully we can agree that's not a lot of code? There's no overhead, no unnecessary setup. Hopefully we can agree that's not a lot of code? There's no overhead, no unnecessary setup.
Look at test.c for a bunch of nice examples, mostly all ripped off the json.org site, and Look at test.c for a bunch of nice examples, mostly all ripped off the json.org site, and
@ -156,11 +156,11 @@ you'd do it (just an example, since these things are very specific):
{ {
while (item) while (item)
{ {
char *newprefix=malloc(strlen(prefix)+strlen(item->name)+2); char *newprefix = malloc(strlen(prefix) + strlen(item->name) + 2);
sprintf(newprefix,"%s/%s",prefix,item->name); sprintf(newprefix,"%s/%s",prefix,item->name);
int dorecurse=callback(newprefix, item->type, item); int dorecurse = callback(newprefix, item->type, item);
if (item->child && dorecurse) parse_and_callback(item->child,newprefix); if (item->child && dorecurse) parse_and_callback(item->child, newprefix);
item=item->next; item = item->next;
free(newprefix); free(newprefix);
} }
} }
@ -185,24 +185,25 @@ You'd use:
void parse_object(cJSON *item) void parse_object(cJSON *item)
{ {
int i; for (i=0;i<cJSON_GetArraySize(item);i++) int i;
for (i = 0 ; i < cJSON_GetArraySize(item) ; i++)
{ {
cJSON *subitem=cJSON_GetArrayItem(item,i); cJSON * subitem = cJSON_GetArrayItem(item, i);
// handle subitem. // handle subitem.
} }
} }
Or, for PROPER manual mode: Or, for PROPER manual mode:
void parse_object(cJSON *item) void parse_object(cJSON * item)
{ {
cJSON *subitem=item->child; cJSON *subitem = item->child;
while (subitem) while (subitem)
{ {
// handle subitem // handle subitem
if (subitem->child) parse_object(subitem->child); if (subitem->child) parse_object(subitem->child);
subitem=subitem->next; subitem = subitem->next;
} }
} }
@ -217,21 +218,22 @@ You can, of course, hand your sub-objects to other functions to populate.
Also, if you find a use for it, you can manually build the objects. Also, if you find a use for it, you can manually build the objects.
For instance, suppose you wanted to build an array of objects? For instance, suppose you wanted to build an array of objects?
cJSON *objects[24]; cJSON * objects[24];
cJSON *Create_array_of_anything(cJSON **items,int num) cJSON * Create_array_of_anything(cJSON ** items, int num)
{ {
int i;cJSON *prev, *root=cJSON_CreateArray(); int i;
for (i=0;i<24;i++) cJSON * prev, * root = cJSON_CreateArray();
for (i = 0 ; i < 24 ; i++)
{ {
if (!i) root->child=objects[i]; if (!i) root->child = objects[i];
else prev->next=objects[i], objects[i]->prev=prev; else prev->next = objects[i], objects[i]->prev = prev;
prev=objects[i]; prev = objects[i];
} }
return root; return root;
} }
and simply: Create_array_of_anything(objects,24); and simply: Create_array_of_anything(objects, 24);
cJSON doesn't make any assumptions about what order you create things in. cJSON doesn't make any assumptions about what order you create things in.
You can attach the objects, as above, and later add children to each You can attach the objects, as above, and later add children to each