提交 65de016c 编写于 作者: K Kevin Branigan

a few more README changes

上级 b051ed05
...@@ -77,7 +77,7 @@ Want to change the framerate? ...@@ -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 ...@@ -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): ...@@ -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: ...@@ -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. ...@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册