-
Notifications
You must be signed in to change notification settings - Fork 56
WJElement Example
penduin edited this page Nov 16, 2012
·
13 revisions
The following JavaScript code...
var doc = {
"name": "Serenity",
"class": "firefly",
"crew": [
{
"name": "Malcolm Reynolds",
"job": "captain",
"born": 2468
},
{
"name": "Kaywinnet Lee Fry",
"job": "mechanic",
"born": 2494
},
{
"name": "Jayne Cobb",
"job": "public relations"
"born": 2485
}
],
"shiny": true
};
var person = null;
for(i in doc.crew) { // note: tedious...
person = doc.crew[i];
if(person.born == 2468) {
person.born = 2486;
}
}
delete(doc.shiny);
for(i in doc.crew) {
person = doc.crew[i];
console.log(person.name +" ("+ person.job +") is "+ (2517 - person.born));
}
console.log(JSON.stringify(doc));
...is functionally the same as the following C code using WJElement:
WJElement doc = NULL;
WJElement person = NULL;
doc = WJEObject(NULL, NULL, WJE_NEW);
WJEString(doc, "name", WJE_SET, "Serenity");
WJEString(doc, "class", WJE_SET, "firefly");
WJEArray(doc, "crew", WJE_SET);
WJEObject(doc, "crew[$]", WJE_NEW);
WJEString(doc, "crew[-1].name", WJE_SET, "Malcolm Reynolds");
WJEString(doc, "crew[-1].job", WJE_SET, "captain");
WJEInt64(doc, "crew[-1].born", WJE_SET, 2468);
WJEObject(doc, "crew[$]", WJE_NEW);
WJEString(doc, "crew[-1].name", WJE_SET, "Kaywinnet Lee Fry");
WJEString(doc, "crew[-1].job", WJE_SET, "mechanic");
WJEInt64(doc, "crew[-1].born", WJE_SET, 2494);
WJEObject(doc, "crew[$]", WJE_NEW);
WJEString(doc, "crew[-1].name", WJE_SET, "Jayne Cobb");
WJEString(doc, "crew[-1].job", WJE_SET, "public relations");
WJEInt64(doc, "crew[-1].born", WJE_SET, 2485);
WJEBool(doc, "shiny", WJE_SET, TRUE);
WJEInt64(doc, "crew[].born == 2468", WJE_SET, 2486); /* note: awesome! */
WJECloseDocument(WJEGet(doc, "shiny", NULL));
while((person = _WJEObject(doc, "crew[]", WJE_GET, &person))) {
printf("%s (%s) is %d\n",
WJEString(person, "name", WJE_GET, ""),
WJEString(person, "job", WJE_GET, ""),
2517 - WJEInt64(person, "born", WJE_GET, 0));
}
WJEDump(doc);
WJECloseDocument(doc);
Notice how similar the code is both in length and clarity. In fact, using WJElement Selectors can make finding and manipulating JSON data even easier and faster in C than in JS!