Android 之 GSON解析JSON数据
使用GSON解析JSON数据
1、GSON的介绍:
GSON是一个JAVA库,可用于将JAVA对象转换称JSON,它也可以被用于将一个JSON字符串转换为等效的Java对象。
GSON可以与任意Java对象,包括预先存在的对象或者你没有源代码结合。
背景:已经有很多开源项目,可以转换Java对象到JSON。然而,他们中大多数要求在你的类上使用元注释Annotation,如果你没有源码,将不能给代码加上Java这些元注解。大多数人也并不完全支持Java泛型的使用。GSON认为这些是非常重要的设计目标;
2、用法准备:
下载GsonAPI:google-gson-1.7.1-release.zip;并投入使用,怎么用大家都明白
3、解析JSON数据的两种方法:
(1):通过获取JsonReader对象解析JSON数据;
(2):通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作;
4、案例:
package com.example.file; import java.io.StringReader; import java.net.Proxy.Type; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.google.gson.stream.JsonReader; /** * GSON 解析 json 数据 * @author Administrator * */ public class MyGson { /** * 使用JsonReader对象解析 JSON 数据 * @throws Exception */ public void jsonReader() throws Exception{ String json = "[{\"name\":\"aa\",\"age\":20,\"score\":90},{\"name\":\"ff\",\"age\":21,\"score\":80}]"; // 1、创建JsonReader JsonReader reader = new JsonReader(new StringReader(json)); reader.beginArray(); while(reader.hasNext()){ reader.beginObject(); while(reader.hasNext()){ String str = reader.nextName(); if(str.equals("name")){ String name = reader.nextString(); Log.i("msg", "name:"+name); } if(str.equals("age")){ int age = reader.nextInt(); Log.i("msg", "age:"+age); } if(str.equals("score")){ int score = reader.nextInt(); Log.i("msg", "score:"+score); } } reader.endObject(); } reader.endArray(); } /** * 测试: * 把对象映射成JSON数据格式 * java to json */ public void tojson(){ Student s1 = new Student("小黑",13, 90); Student s2 = new Student("小白",14, 70); Student s3 = new Student("小黄",15, 80); Student s4 = new Student("小绿",16, 100); List<Student> list = new ArrayList<Student>(); list.add(s1); list.add(s2); list.add(s3); list.add(s4); Gson gson = new Gson(); String s = gson.toJson(list); Log.i("msg", "对象映射称json格式为:"+s); } /** * 测试: * 通过把JSON 数据映成一个对象,使用GSON对象的fromJson()方法获取一个对象数组进行操作; * * json to java * * 如果要处理的JSON字符串只包含一个JSON 对象,则可以直接使用fromJson获取一个对象 */ public void fromjson(){ Gson gson = new Gson(); // 单个对象的操作 String strjson = "{"+"\"name\":\"aa\",\"score\":90,\"age\":12"+"}"; Student stu = gson.fromJson(strjson, Student.class); // 映射获取数据 Log.i("msg", "姓名:"+stu.getName()+",年龄:"+stu.getAge()); /* 多个对象的操作 */ String json = "[{\"name\":\"aa\",\"age\":20,\"score\":90}," + "{\"name\":\"ff\",\"age\":21,\"score\":80}]"; java.lang.reflect.Type listType = new TypeToken<LinkedList<Student>>(){}.getType(); Gson gson1 = new Gson(); LinkedList<Student> stus = gson1.fromJson(json, listType); for(Iterator iterator=stus.iterator();iterator.hasNext();){ Student st = (Student) iterator.next(); Log.i("msg",st.getName()); } } }
使用GSON解析json数据必须用到一个jar包,下载jar包和源码地址:
相关推荐
nalanrumeng 2020-01-13
leavesC 2019-06-29
kane 2014-03-31
SXIAOYI 2020-09-16
xiaonuoyal 2020-06-17
SXIAOYI 2020-06-11
yinbaoshiguang 2020-06-09
Chydar 2020-06-02
nalanrumeng 2020-06-01
xiaonuoyal 2020-06-01
nalanrumeng 2020-05-19
ITprivate 2020-04-15
xiaonuoyal 2020-04-14
ITprivate 2020-03-26
ITprivate 2020-02-12
xiaonuoyal 2019-12-07