static void test_string(void) { JSON json = parseJSON(data, data+sizeof(data)); JSON child = JSON_get(json, "app"); assert(JSON_isValid(child)); assert(JSON_type(child) == JSON_Array); assert(JSON_length(child) == 3); JSONArray *a; JSON *I, *E; int i = 0; JSON_ARRAY_EACH(child, a, I, E) { assert(JSON_isValid(JSON_get(*I, "name"))); assert(JSON_isValid(JSON_get(*I, "line"))); assert(JSON_isValid(JSON_get(*I, "version"))); assert(JSON_isValid(JSON_get(*I, "flag"))); size_t len; const char *name = JSON_getString(*I, "name", &len); int line = JSON_getInt(*I, "line"); double ver = JSON_getDouble(*I, "version"); assert(len == strlen(names[i]) && strncmp(name, names[i], len) == 0); assert(line == lines[i]); assert(ver == versions[i]); fprintf(stderr, "%s %d %f\n", name, line, ver); i++; }
static size_t GetJsonSize(KonohaContext *kctx, struct JsonBuf *jsonbuf) { return JSON_length(toJSON(jsonbuf->json_i)); }
//## int JSON.getSize(); static KMETHOD kJSONArray_getSize(KonohaContext *kctx, KonohaStack *sfp) { JSON obj = ((kJSON *)sfp[0].asObject)->json; KReturnUnboxValue(JSON_length(obj)); }