如何在 Swift 中优雅地处理 JSON

如何在 Swift 中优雅地处理 JSON,第1张

#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类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9709512.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存