a few more README changes

This commit is contained in:
Kevin Branigan 2011-08-22 00:55:11 -04:00
parent b051ed05d7
commit 65de016c38
1 changed files with 26 additions and 24 deletions

View File

@ -77,7 +77,7 @@ Want to change the framerate?
Back to disk?
char * rendered=cJSON_Print(root);
char * rendered = cJSON_Print(root);
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;
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);
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);
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
@ -156,11 +156,11 @@ you'd do it (just an example, since these things are very specific):
{
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);
int dorecurse=callback(newprefix, item->type, item);
if (item->child && dorecurse) parse_and_callback(item->child,newprefix);
item=item->next;
int dorecurse = callback(newprefix, item->type, item);
if (item->child && dorecurse) parse_and_callback(item->child, newprefix);
item = item->next;
free(newprefix);
}
}
@ -185,24 +185,25 @@ You'd use:
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.
}
}
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)
{
// handle subitem
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.
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();
for (i=0;i<24;i++)
int i;
cJSON * prev, * root = cJSON_CreateArray();
for (i = 0 ; i < 24 ; i++)
{
if (!i) root->child=objects[i];
else prev->next=objects[i], objects[i]->prev=prev;
prev=objects[i];
if (!i) root->child = objects[i];
else prev->next = objects[i], objects[i]->prev = prev;
prev = objects[i];
}
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.
You can attach the objects, as above, and later add children to each