
#include <jnih>
#include "com_test_Testh"
#include <stdioh>
#include <stdlibh>
#include <stringsh>
//获取字符串
JNIEXPORT void JNICALL Java_com_test_Test_sayHello(JNIEnv env, jobject obj,
jstring s) {
char str = (char ) (env)->GetStringUTFChars(env, s, 0);
printf("\n c-string: hello - %s", str);
}
//获取,返回int
JNIEXPORT jint JNICALL Java_com_test_Test_add(JNIEnv env, jobject obj,
jint a, jint b) {
int i = a;
int j = b;
printf("\n c-int: %d - %d", i, j);
char str[256];
sprintf(str, "%d", i + j);
return (jint) i + j;
}
//获取,返回float
JNIEXPORT jfloat JNICALL Java_com_test_Test_getFloat(JNIEnv env, jobject obj,
jfloat f) {
float fl = f;
printf("\n c-float: %3f", fl);
fl = 200555;
return (jfloat) fl;
}
//获取,返回 double
JNIEXPORT jdouble JNICALL Java_com_test_Test_getDouble(JNIEnv env,
jobject obj, jdouble dou) {
double d = dou;
printf("\n c-double: %3f", d);
d = 80088;
return (jdouble) d;
}
//获取,返回boolean
JNIEXPORT jboolean JNICALL Java_com_test_Test_getBoolean(JNIEnv env,
jobject obj, jboolean bool) {
unsigned char b = bool;
printf("\n c-boolean: %lu ", b);
if (b) {
printf("true");
} else {
printf("false");
}
b = 1;
return (jboolean) b;
}
//获取,返回 string
JNIEXPORT jstring JNICALL Java_com_test_Test_getString(JNIEnv env,
jobject obj, jstring s) {
char st = (char ) (env)->GetStringUTFChars(env, s, 0);
printf("\n c-string: %s", st);
char str = "hello wang wu!";
jstring rtn;
rtn = (env)->NewStringUTF(env, str);
return rtn;
}
//获取,返回 string []
JNIEXPORT jobjectArray JNICALL Java_com_test_Test_getStringArray(JNIEnv env,
jobject obj, jobjectArray arr) {
int len = (env)->GetArrayLength(env, arr);
printf("\n c-stringArray :");
int i = 0;
for (i = 0; i < len; i++) {
jobject obj = (env)->GetObjectArrayElement(env, arr, i);
jstring str = (jstring) obj;
const char szStr = (env)->GetStringUTFChars(env, str, 0);
printf(" %d-%s ", i, szStr);
(env)->ReleaseStringChars(env, str, szStr);
}
//-----返回----
jstring str;
jobjectArray args = 0;
jsize size = 5;
char sa[] = { "Hello,", "world!", "zhang", "san", "yuang" };
int j = 0;
jclass objClass = (env)->FindClass(env, "java/lang/String");
args = (env)->NewObjectArray(env, size, objClass, 0);
for (j = 0; j < size; j++) {
str = (env)->NewStringUTF(env, sa[j]);
(env)->SetObjectArrayElement(env, args, j, str);
}
return args;
}
-----------------------------------------------------------------
下面是Testjava
package comtest;
public class Test {
private native void sayHello(String str);
private native int add(int a, int b);
private native float getFloat(float f);
private native double getDouble(double d);
private native boolean getBoolean(boolean b);
private native String getString(String str);
private native String[] getStringArray(String[] sa);
static {
SystemloadLibrary("Test");
}
public static void main(String[] args) {
Test test = new Test();
testsayHello("zhang san");
Systemoutprintln("int --> " + testadd(10, 20));
Systemoutprintln("float --> " + testgetFloat((float) 20123));
Systemoutprintln("double --> " + testgetDouble(100369));
Systemoutprintln("boolean --> " + testgetBoolean(true));
Systemoutprintln("string --> " + testgetString("wang Wu"));
String[] ss = { "hello", "-", "zhang", "san" };
Object[] obj = testgetStringArray(ss);
Systemoutprint("string[]--> ");
for (Object object : obj) {
Systemoutprint(object + " ");
}
}
}
package com;
import javautilList;
import comKensouPerson;
import comalibabafastjsonJSON;
public class Yuma
{
public static void main(String[] args)
{
String result =
"{\"data1\":[{\"name\":\"aa\",\"age\":\"12\"},{\"name\":\"bb\",\"age\":\"13\"}],\"data2\":{\"nowpage\":1,\"pagesize\":2}}";
Kensou ps = JSONparseObject(result, Kensouclass);
Systemoutprintln(ps);
List<Person> data1 = psgetData1();
for(int i = 0; i < data1size(); i++)
{
Person p = data1get(i);
Systemoutprintln(p);
}
Person data2 = psgetData2();
Systemoutprintln(data2);
}
}
/
模型对象不需要构造函数, 至少只需要setter方法<br>
Person类可以是内嵌类,也可以是外部类 <br>
Kensou类只能是外部类<br>
集合类可以是数组或者List类型<br>
<p>
使用的是<font color="red">fastjson-1136jar</font>
/
class Kensou
{
private List<Person> data1;
private Person data2;
public List<Person> getData1()
{
return data1;
}
public void setData1(List<Person> data1)
{
thisdata1 = data1;
}
public Person getData2()
{
return data2;
}
public void setData2(Person data2)
{
thisdata2 = data2;
}
@Override
public String toString()
{
return Stringformat("Kensou [data1=%s, data2=%s]", data1, data2);
}
class Person
{
private String name;
private int age;
private int nowpage;
private int pagesize;
public String getName()
{
return name;
}
public void setName(String name)
{
thisname = name;
}
public int getAge()
{
return age;
}
public void setAge(int age)
{
thisage = age;
}
public int getNowpage()
{
return nowpage;
}
public void setNowpage(int nowpage)
{
thisnowpage = nowpage;
}
public int getPagesize()
{
return pagesize;
}
public void setPagesize(int pagesize)
{
thispagesize = pagesize;
}
@Override
public String toString()
{
return Stringformat("Person [name=%s, age=%s, nowpage=%s, pagesize=%s]", name, age, nowpage, pagesize);
}
}
}
1建议用JsonNET 有nuget包的话,直接搜索JsonNET下载; 没有的话,需要上网找一下 NewtonsoftJson 的dll; 地址:>
以上就是关于如何在 Swift 中优雅地处理 JSON全部的内容,包括:如何在 Swift 中优雅地处理 JSON、android jni abifilters为什么没产生文件、在JNI中如何将jobject类型转换为jdouble类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)