原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0829/620.html
Google Android 还供应企业培训来另外一种方式来剖判JSON数据,那即是Gson;
Gson短长常方便的JSON剖判/封装/处分等等,壮大的工具类:
特点:Gson能够把JSON工具数据->转换映射为Bean工具
Gson能够把JSON数组数据->转换映射为鸠合
Gson能够把Bean工具->转换为JSON工具数据
Gson能够把鸠合->转换为JSON数组数据
...........
开始要在app/build.gradle建设文件中,导入,Gson支持包
// Gson支持包的导入
implementation 'com.google.code.gson:gson:2.6.2'
需求剖判的JSON数据:
/data/data/ho.mynetwork01/files/pottingJSON1
{
"name":"李四",
"age":99,
"hobby":"常州软件技术培训醉心是练习截拳道"
}
/data/data/ho.mynetwork01/files/pottingJSONArray1
复制代码
[
{
"name":"君君",
"age":89,
"sex":"男"
},
{
"name":"小君",
"age":99,
"sex":"女"
},
{
"name":"大君",
"age":88,
"sex":"男"
}
]
复制代码
界说一个Bean
界说的name/age/hobby 必需要和JSON数据内部的千篇一律
复制代码
package liudeli.mynetwork01.entity;/**
* 界说一个Bean
* 界说的name/age/hobby 必需要和常州平台运营JSON数据内部的千篇一律
* {
* "name":"李四",
* "age":99,
* "hobby":"醉心是练习截拳道"
* } */public class Student2 { private String name; private int age; private String hobby; public Student2(String name, int age, String hobby) { this.name = name; this.age = age; this.hobby = hobby;
}
@Override public String toString() { return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", hobby='" + hobby + '\'' +
'}';
}
}
复制代码
界说的name/age/sex 必需要和JSON数据内部的千篇一律
复制代码
package liudeli.mynetwork01.entity;/**
* 界说一个Bean
* 界说的name/age/sex 必需要和JSON数据内部的千篇一律
*
* [
* {
* "name":"君君",
* "age":89,
* "sex":"男"
* },
* {
* "name":"小君",
* "age":99,
* "sex":"女"
* },
* {
* "name":"大君",
* "age":88,
* "sex":"男"
* }
* ] */public class Student { private String name; private int age; private String sex; public Student(String name, int age, String sex) { this.name = name; this.age = age; this.sex = sex;
}
@Override public String toString() { return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}
复制常州微信公众平台代码
GsonAnalyzeJSONActivity.java
复制代码
package liudeli.mynetwork01;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.List;import liudeli.mynetwork01.entity.Student;import liudeli.mynetwork01.entity.Student2;public class GsonAnalyzeJSONActivity extends Activity { private final String TAG = GsonAnalyzeJSONActivity.class.getSimpleName();
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gson_analyze);
} /**
* Gson剖判JSON工具
* {
* "name":"李四",
* "age":99,
* "hobby":"醉心是练习截拳道"
* } */
public void gonsAnalyzeJSONObject(View view) {
String jsonData = readFile("pottingJSON1"); // Log.d(TAG, "jsonData:" + jsonData);
Gson gson = new Gson();
Student2 student2 = gson.fromJson(jsonData, Student2.class);
Log.d(TAG, "gonsAnalyzeJSONObject 剖判后的后果:" + student2.toString());
} /**
* Gson剖判JSON数组
* [
* {
* "name":"君君",
* "age":89,
* "sex":"男"
* },
* {
* "name":"小君",
* "age":99,
* "sex":"女"
* },
* {
* "name":"大君",
* "age":88,
* "sex":"男"
* }
* ]
* @param view */
public void gonsAnalyzeJSONArray(View view) {
String jsonData = readFile("pottingJSONArray1"); // Log.d(TAG, "jsonData:" + jsonData);
Gson gson = new Gson(); /**
* TypeToken<List<需求映射的Bean工具>>(){}.getType() */
List<Student> list = gson.fromJson(jsonData, new TypeToken<List<Student>>(){}.getType()); // 参数二:需求常州微信小程序开发指定类型,类型来决意剖判的鸠合
for (Student student: list) {
Log.d(TAG, "gonsAnalyzeJSONArray 剖判后的后果:" + student.toString());
}
} /**
* 读取文件内部的字符串
* @param fileName
* @return
*/
private String readFile(String fileName) {
String result = null; try {
InputStream inputStream = openFileInput(fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] bytes = new byte[inputStream.available()];
inputStream.read(bytes);
baos.write(bytes, 0,bytes.length);
result = new String(baos.toByteArray());
baos.close();
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
} return result;
}
}
复制代码
activity_gson_analyze.xml
复制代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gson剖判常州网站开发建设JSON工具"
android:onClick="gonsAnalyzeJSONObject"
/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Gson剖判JSON数组"
android:onClick="gonsAnalyzeJSONArray"
/></LinearLayout>
复制代码
日记的打印:
应用Gson剖判,JSON工具数据:
12-23 23:00:52.108 9729-9729/ho.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONObject 剖判后的后果:Student{name='李四', age=99, hobby='醉心是练习截拳道'}
应用Gson剖判,JSON游戏开发运营数组数据:
12-23 23:00:53.199 9729-9729/ho.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 剖判后的后果:Student{name='君君', age=89, sex='男'}
12-23 23:00:53.199 9729-9729/ho.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 剖判后的后果:Student{name='小君', age=99, sex='女'}
12-23 23:00:53.199 9729-9729/ho.mynetwork01 D/GsonAnalyzeJSONActivity: gonsAnalyzeJSONArray 剖判后的后果:Student{name='大君', age=88, sex='男'}
上篇:上一篇:Android UI组件-ListView列表控件
下篇:下一篇:Android ListView内容变更后的刷新