static const char *GetJsonText(KonohaContext *kctx, struct JsonBuf *jsonbuf, const char *key, size_t keylen_or_zero, const char *defval) { if(key == NULL) JSONString_get(toJSON(jsonbuf->json_i)); size_t length = KeyLen(key, keylen_or_zero); return JSON_getString(toJSON(jsonbuf->json_i), key, &length); }
static const char *GetJsonText(KonohaContext *kctx, struct JsonBuf *jsonbuf, const char *key, size_t keylen_or_zero, const char *defval) { size_t length; JSON json = AsJSON(jsonbuf); if(key == NULL) return JSONString_get(json); length = KeyLen(key, keylen_or_zero); return JSON_getString(json, key, &length); }
static size_t DoJsonEach(KonohaContext *kctx, struct JsonBuf *jsonbuf, void *thunk, void (*doEach)(KonohaContext *, const char *, size_t, struct JsonBuf *, void *)) { size_t count = 0; struct JsonBuf eachbuf; JSON Key, Val; JSONObject_iterator Itr; JSON obj = AsJSON(jsonbuf); JSON_OBJECT_EACH(obj, Itr, Key, Val) { const char *key = JSONString_get(Key); size_t len = JSONString_length(Key); eachbuf.json_i = Val.bits; doEach(kctx, key, len, &eachbuf, thunk); count++; } return count; }