• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

ANDROID-GSON解析JSON(JSON工具/JSON数组)

原创内容,转载请注明原文网址: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内容变更后的刷新