Json作为一种轻量级的数据交换格式,在Android中的使用无需多说,除了用于网络数据传输,我们还偶尔在App代码中拿它做配置文件,相当于XML。

今天对Android中的几种Json工具作一个简单的用法上的记录。


老规矩,在节目开始之前,先来一个搞笑段子。

女神要买电脑,我疯狂地帮她查参数,比价格,把优势劣势分析了一遍。最后,她一句:就买那个粉色的吧。

男闺蜜要相亲,我疯狂地帮他算星座,比血型,把性格婚姻融洽度分析了一遍,最后,他一句:就选那个胸大的吧。


言归正传,我们假定有一个Java Bean:User,它有两个属性:name、age

public class User {    private String name = null;    private int age = 0;    public User(){}    public User(String name, int age) {        this.name = name;        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }}
我们要把Java对象转换成Json String,再把Json String转换成Java对象。

1、Google的GSON

对象 to Json

Gson gson = new Gson();User user = new User("aa", 20);String jsonString = gson.toJson(user);Log.e(TAG, jsonString);


Json to 对象

String jsonString = "{\"age\":20,\"name\":\"aa\"}";User user = gson.fromJson(jsonString, User.class);Log.e(TAG, user.getName() + ":" + user.getAge());


对象数组 to Json
List<User> users = new ArrayList();users.add(new User("aa", 10));users.add(new User("bb", 20));String jsonString = gson.toJson(users);Log.e(TAG, jsonString);


Json to 对象数组

String jsonString = "[{\"age\":10,\"name\":\"aa\"},{\"age\":20,\"name\":\"bb\"}]";TypeToken<List<User>> token = new TypeToken<List<User>>(){};Type type = token.getType();List<User> users = gson.fromJson(jsonString, type);for(int i = 0; i < users.size(); i++) {    Log.e(TAG, users.get(i).getName() + ":" + users.get(i).getAge());}


2、Alibaba的fastJson

对象 to Json

User user = new User("aa", 20);String jsonString = JSON.toJSONString(user);Log.e(TAG, jsonString);

Json to 对象

String jsonString = "{\"age\":20,\"name\":\"aa\"}";User user = JSON.parseObject(jsonString, User.class);Log.e(TAG, user.getName() + ":" + user.getAge() + ":" + user.getFather());


3、org.JSON

对象 to Json

User user = new User("aa", 20);JSONObject jsonObject = new JSONObject();try {    jsonObject.put("name", user.getName());    jsonObject.put("age", user.getAge());    String jsonString = jsonObject.toString();    Log.e(TAG, jsonString);} catch (JSONException e) {    e.printStackTrace();}


Json to 对象

String jsonString = "{\"age\":20,\"name\":\"aa\"}";try {    JSONObject jsonObject = new JSONObject(jsonString);    String name = jsonObject.getString("name");    int age = jsonObject.getInt("age");    Log.e(TAG, "name=" + name + ", age=" + age);    User user = new User(name, age);} catch (JSONException e) {     e.printStackTrace();}


Json的使用在实际项目中基本上都会再做一个简单的封装,这个就是列举了一下主要的Api。


至于这三个的性能,网上有人做过实验:

在数据量一般的情况下,GSON稍微好点,在数据量特别大(千万级)的时候,FastJson展现出很好的性能,可能这就是为什么Alibaba给它取名叫fastJson。


本期节目就到这里,感谢大家的收看,下期再见~








更多相关文章

  1. 新年过后献上关于Android内存泄漏的种种总结
  2. 杂谈:后台进程对Android性能的影响
  3. 给 Android(安卓)应用开发者的十个建议
  4. Android研究之英特尔 Android* 开发人员指南上的对等应用详解
  5. Android指纹解锁,更好的接入到应用中
  6. Android微信SDK API 调用教程
  7. Android(安卓)热补丁技术——资源的热修复
  8. Android性能优化篇:Android中如何避免创建不必要的对象
  9. Android面试经验一:

随机推荐

  1. Android(安卓)DatePicker和TimePicker案
  2. 安卓新技术学习资料整理 常更新哦~
  3. android自定义属性attrs
  4. Android初学笔记之
  5. 快速开发android,离不开这10个优秀的开源
  6. Android(安卓)ApiDemos示例解析(80):Grap
  7. 我的Xamarin开发配置
  8. android 动态加载布局文件三种方法
  9. Android(安卓)SQLiteOpenHelper
  10. Android获取assets文件夹中的数据并写入S