static kbool_t SetJsonKeyValue(KonohaContext *kctx, struct JsonBuf *jsonbuf, const char *key, size_t keylen_or_zero, struct JsonBuf *otherbuf) { if(!JSON_TYPE_CHECK(Object, toJSON(jsonbuf->json_i))) { return false; } size_t keylen = KeyLen(key, keylen_or_zero); JSONObject_set((JSONMemoryPool *)(PLATAPI JsonHandler), toJSON(jsonbuf->json_i), key, keylen, toJSON(otherbuf->json_i)); return true; }
//## void JSON.set(String key, JSON value); static KMETHOD kJSON_set(KonohaContext *kctx, KonohaStack *sfp) { kString *s = sfp[1].asString; JSON obj, key, val; obj = ((kJSON *)sfp[0].asObject)->json; val = ((kJSON *)sfp[2].asObject)->json; key = JSONString_new(S_text(s), S_size(s)); JSONObject_set(obj, key, val); KReturnVoid(); }
static kbool_t SetJsonKeyValue(KonohaContext *kctx, struct JsonBuf *jsonbuf, const char *key, size_t keylen_or_zero, struct JsonBuf *otherbuf) { JSON json = AsJSON(jsonbuf); size_t keylen; if(!JSON_TYPE_CHECK(Object, json)) { return false; } keylen = KeyLen(key, keylen_or_zero); JSONObject_set((JSONMemoryPool *)(JSONAPI JsonHandler), json, key, keylen, AsJSON(otherbuf)); return true; }
static kbool_t SetJsonValue(KonohaContext *kctx, struct JsonBuf *jsonbuf, const char *key, size_t keylen_or_zero, KJSONTYPE type, ...) { va_list ap; va_start(ap, type); JSON val = toJSON(NewJsonI((JSONMemoryPool *)(PLATAPI JsonHandler), type, ap)); kbool_t ret = true; if(key != NULL) { size_t keylen = KeyLen(key, keylen_or_zero); JSONObject_set((JSONMemoryPool *)(PLATAPI JsonHandler), toJSON(jsonbuf->json_i), key, keylen, val); } else { jsonbuf->json_i = val.bits; } va_end(ap); return ret; }