Android 之 GSON解析JSON数据
程序员文章站
2022-03-02 19:36:37
...
使用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、案例:
使用GSON 解析 json数据必须用到一个jar包,下载jar包和源码地址:
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包和源码地址:
推荐阅读
-
Vue源码解析之数据响应系统的使用
-
javascript解析ajax返回的xml和json格式数据实例详解
-
Android解析json数据示例代码(三种方式)
-
Android之采用execSQL与rawQuery方法完成数据的添删改查操作详解
-
Android数据持久化之SQLite数据库用法分析
-
Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用
-
Android 解析JSON对象及实例说明
-
Android webview与js交换JSON对象数据示例
-
解析Android中string-array数据源的简单使用
-
Android解析服务器端发来的xml数据示例