欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c json轉jobject

阮建安1年前9瀏覽0評論

c json轉jobject是一個非常有用的工具,可以方便地將C語言中的JSON數據轉換成Java中的JObject格式。使用這個工具可以使我們更加方便地處理JSON數據,大大提高了工作效率。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
#include <jni.h>
jobject json2jobject(JNIEnv *env, json_t *object) {
if (!object) return NULL;
jclass mapClass = (*env)->FindClass(env, "java/util/HashMap");
jmethodID constructor = (*env)->GetMethodID(env, mapClass, "<init>", "()V");
jobject hashMap = (*env)->NewObject(env, mapClass, constructor);
json_t *key, *value;
const char *ckey;
json_object_foreach(object, ckey, value) {
jobject jvalue;
switch (json_typeof(value)) {
case JSON_STRING:
jvalue = (*env)->NewStringUTF(env, json_string_value(value));
break;
case JSON_INTEGER:
jvalue = (*env)->NewObject(env, (*env)->FindClass(env,"java/lang/Long"), (*env)->GetMethodID(env,(*env)->FindClass(env,"java/lang/Long"),"<init>","(J)V"), json_integer_value(value));
break;
case JSON_REAL:
jvalue = (*env)->NewObject(env, (*env)->FindClass(env,"java/lang/Double"), (*env)->GetMethodID(env,(*env)->FindClass(env,"java/lang/Double"),"<init>","(D)V"), json_real_value(value));
break;
case JSON_TRUE:
case JSON_FALSE:
jvalue = (*env)->NewObject(env,(*env)->FindClass(env,"java/lang/Boolean"), (*env)->GetMethodID(env,(*env)->FindClass(env,"java/lang/Boolean"),"<init>","(Z)V"), json_is_true(value) ? JNI_TRUE : JNI_FALSE);
break;
case JSON_OBJECT:
jvalue = json2jobject(env, value);
break;
case JSON_ARRAY:
jvalue = json2jarray(env, value);
break;
default:
jvalue = NULL;
}
(*env)->CallObjectMethod(env, hashMap, (*env)->GetMethodID(env, mapClass, "put", "(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;"),(*env)->NewStringUTF(env, ckey), jvalue);
}
return hashMap;
}

以上的代碼實現了將C語言中的JSON數據轉換為JObject格式的過程。我們可以將這個函數放在我們的代碼中,方便地進行JSON數據的處理。使用該函數,我們只需將JSON數據傳入即可得到對應的JObject對象。這樣可以極大地節省我們的代碼編寫時間,使我們的編碼效率更高。