在Android中可以使用Gson解析JSON数据

首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:

google-gson-1.7.1-release.zip

把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。

可以使用以下两种方法解析JSON数据:

通过获取JsonReader对象解析JSON数据:

String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";try{JsonReader reader = new JsonReader(new StringReader(jsonData));reader.beginArray();while(reader.hasNext()){reader.beginObject();while(reader.hasNext()){String tagName = reader.nextName();if(tagName.equals("username")){System.out.println(reader.nextString());}else if(tagName.equals("userId")){System.out.println(reader.nextString());}}reader.endObject();}reader.endArray();}catch(Exception e){e.printStackTrace();}

通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作:

创建JSON数据对应的一个POJO对象User.java:

public class User {private String username ;private int userId ;public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}}

使用Gson对象获取User对象数据进行相应的操作:

Type listType = new TypeToken<LinkedList<User>>(){}.getType();Gson gson = new Gson();LinkedList<User> users = gson.fromJson(jsonData, listType);for (Iterator iterator = users.iterator(); iterator.hasNext();) {User user = (User) iterator.next();System.out.println(user.getUsername());System.out.println(user.getUserId());}

如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:

String jsonData = "{\"username\":\"arthinking\",\"userId\":001}";Gson gson = new Gson();User user = gson.fromJson(jsonData, User.class);System.out.println(user.getUsername());System.out.println(user.getUserId());
(转自:http://www.itzhai.com/android-to-parse-json-data-using-gson.html)



更多相关文章

  1. Android(安卓)面试必问高级知识点(2021)
  2. Android(安卓)Volley完全解析(三),定制自己的Request
  3. Android(安卓)通过代码实现控制数据网络的开关(仅适用于5.0以上)
  4. Android之SQLite开发(2)—SQLiteOpenHelper类
  5. android的tabHost的使用
  6. Android(安卓)Binder机制分析
  7. Android(安卓)核心分析 之五基本空间划分
  8. mybatisplus的坑 insert标签insert into select无参数问题的解决
  9. python起点网月票榜字体反爬案例

随机推荐

  1. Android 监听ContentProvider中数据的变
  2. 我的Android环境搭建
  3. 在线查看android源代码的3种方式
  4. OpenGL ES for Android 绘制立方体
  5. Android Studio打不开虚拟机,两种情况详解
  6. Android Volley的使用
  7. android隐藏EditText光标
  8. Storm——Android SQLite数据库管理类库
  9. Android MQTT 实现Push
  10. Android(安卓)Studio Gradle Sync同步慢