Android----json学习

Android----json学习

json简介

当前最主流的、轻量级的数据交换格式,尤其是经历过前后台分离开发的人,能明显感觉出json格式的强大。

json语法

例如:

[
  {
    "a1": "A.有什么样的童年,就有什么样的作家。作家就是其成长衍生的情感、观察和思考。",
    "a2": "B.团队的组织者能否正确地指引方向,是一个团队能否成为优秀团队的决定性因素。",
    "a3": "C.只有建立起国家监督制度,对历史文化名城的保护才能做到有法可依、有法必依。",
    "a4": "D.消费者一旦被认定在消费中蒙受精神损害,经营者将支付至少五万元的精神赔偿费。",
    "analyze": "【应试指导】A项“作家”与“情感、观察和思考”主宾搭配不当。应把“作家”改为“作家的作品”。原句为“有什么样的童年,就有什么样的作家,作家的作品本质上是他的自叙传,是由他的成长经历衍发的情感、观察和思考。” 【故答案当选A】",
    "answer": "A",
    "id": 26,
    "point": 1,
    "title": "【基础知识题】下列各句中,有语病的一项是()。",
    "type": ""
  },
  {
    "a1": "A.(拙)笨    (黜)免    咄咄(逼)人",
    "a2": "B.(蕴)藏    (瘟)疫    不(温)不火",
    "a3": "C.(臭)氧    铜(臭)    乳(臭)未干",
    "a4": "D.(渎)职    案(牍)    买(椟)还珠",
    "analyze": "【应试指导】 拙(zhuo一声)笨,罢黜(chu四声),咄咄(duo一声)逼人;铜臭(xiu四声) 【故答案当选A】",
    "answer": "A",
    "id": 64,
    "point": 1,
    "title": "【基础知识题】下列词语中加点字的读音全都不相同的一组是()",
    "type": ""
  }
]

1个json文件包含很多数据,这些数据都是以键值对(准确的来说应该是json值)的形式存在的。

json解析

技术:原生编码、Gson框架

方向:Java对象------>json; json------>jJava对象

具体API:

Android原生APl:

JsonObject:json对象{}

    JSONObject(String json):将json字符串解析为json对象

	Xxx getxxx(String name):根据name,在json对象中得到对应的Value

    JsonArray:json数组[]

	JSONArray(String json):将json字符串解析为json数组

	int length():得到json数组中元素的个数

	Xxx getXxx(int index):根据下标得到json数组中对应的元素数据

Gson框架APl:

Gson:能解析json数据的类

	Gson():构造对象的方法

	String tolson(Object src):将对象转换为对应格式的json字符串

	Tfromlson(string json,Type typeOfT):解析Json字符串,得到对象

    TypeToken<T>:用来得到Type的类

	protected TypeToken():受保存的构造方法

	Type getType():得到类型对象

实例代码----基于Gson

实体类代码

public class EntityStudent {
    //id":1,"name":"小明","sex":"男","age":18,"height":175
    private Integer id;
    private String name;
    private String sex;
    private Integer age;
    private Integer height;
    
    set......get.....方法
    
     @Override
    public String toString() {
        return "EntityStudent{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                ", height=" + height +
                '}';
    }
    
}

使用Gson将json格式的字符串转换为java对象

private void gsonTranslateJsonToJava() {
    // 1. 创建Gson对象
    Gson gson = new Gson();
    // 2. 创建JavaBean类的对象
    EntityStudent student = new EntityStudent();
    // 3. 使用Gson解析:将JSON数据转为单个类实体
    String json = "{\"id\":1,\"name\":\"小明\",\"sex\":\"男\",\"age\":18,\"height\":175}";
    student = gson.fromJson(json, EntityStudent.class);
    student.show();
}

使用Gson将json格式的字符串转换为java对象list

private void gsonTranslateJsonListToJava() {
    // 1. 创建Gson对象
    Gson gson = new Gson();
    // 2. 创建JavaBean类的对象
    EntityStudent student = new EntityStudent();
    // 3. 使用Gson解析:将JSON数据转为单个类实体
    String jsonString = "[{\"id\":1,\"name\":\"小明\",\"sex\":\"男\",\"age\":18,\"height\":175},{\"id\":2,\"name\":\"小红\",\"sex\":\"女\",\"age\":19,\"height\":165},{\"id\":3,\"name\":\"小强\",\"sex\":\"男\",\"age\":20,\"height\":185}]";
    List<EntityStudent> list = gson.fromJson(jsonString, new TypeToken<List<EntityStudent>>() {
    }.getType());
    for (EntityStudent e : list) {
        System.out.println(e);
    }
}

使用Gson将java对象转化为json格式的字符串

private void gsonTranslateJavaToJava() {
    EntityStudent student = new EntityStudent(4,"stf","男",23,178);
    Gson gson = new Gson();
    String s = gson.toJson(student);
    System.out.println(s);
}

使用Gson将java对象list转化为json格式的字符串

private void gsonTranslateJavaListToJava() {
    List<EntityStudent> list = new ArrayList<EntityStudent>();
    EntityStudent student1 = new EntityStudent(4,"stf1","男",23,178);
    EntityStudent student2 = new EntityStudent(5,"stf2","男",23,178);
    EntityStudent student3 = new EntityStudent(6,"stf3","男",23,178);
    list.add(student1);
    list.add(student2);
    list.add(student3);
    //核心代码
    String s = new Gson().toJson(list);
    System.out.println(s);
}
posted @ 2019-05-21 18:29  Kill(Bug)  阅读(59)  评论(0)    收藏  举报