JSON

Android之JSON全面解析与使用(3)

字号+ 作者:H5之家 来源:H5之家 2016-06-11 12:00 我要评论( )

对于POST请求,需要的json数据自定义比较大。例如登录时,需要传入账号和密码。 private static void writeJson() {//1 构造gson 对象Gson gson = new Gson();//2 ,构建map对象Map map = new HashMap();map.put("us

对于POST请求,需要的json数据自定义比较大。例如登录时,需要传入账号和密码。

private static void writeJson() { //1 构造gson 对象 Gson gson = new Gson(); //2 ,构建map对象 Map map = new HashMap(); map.put("username","haha"); map.put("password",123456); //3 生成json数据 String json = gson.toJson(map); System.out.println(json); },object>,object> Gson使用扩展

GsonBuilder ,通过该类初始化一些Gson的基本属性

Gson gson = new GsonBuilder() //序列化null .serializeNulls() // 设置日期时间格式,另有2个重载方法 // 在序列化和反序化时均生效 .setDateFormat("yyyy-MM-dd") // 禁此序列化内部类 .disableInnerClassSerialization() //生成不可执行的Json(多了 )]}' 这4个字符) .generateNonExecutableJson() //禁止转义html标签 .disableHtmlEscaping() //格式化输出 .setPrettyPrinting() .create(); Gson的封装 /** * gson 的基本封装,完成Gson 解析中常用的功能 * 备注人: Alex_MaHao * @date 创建时间:2016年6月6日 下午4:33:25 */ public class GsonUtil { private static Gson gson = null; static { if (gson == null) { gson = new Gson(); } } private GsonUtil() { } /** * * 对象转化为json 数据 * @param object 需要转化的对象 * @return */ public static String GsonString(Object object) { String gsonString = null; if (gson != null) { gsonString = gson.toJson(object); } return gsonString; } /** * json 数据转化为实体类对象 * * @param gsonString * @param cls * @return */ public static T GsonToBean(String gsonString, Class cls) { T t = null; if (gson != null) { t = gson.fromJson(gsonString, cls); } return t; } /** * * Json 数据转化为List集合--集合中为实体类 * * @param gsonString * @param cls * @return */ public static List GsonToList(String gsonString, Class cls) { ArrayList mList = new ArrayList(); JsonArray array = new JsonParser().parse(gsonString).getAsJsonArray(); for (final JsonElement elem : array) { mList.add(gson.fromJson(elem, cls)); } return mList; } /** * 将数据转化成List集合--集合中为map * * @param gsonString * @return */ public static List,>,> fastJson

fastJson 是阿里巴巴出的第三方库。该库的使用非常的方便而且强大。但是用的并不多,大家都是用Gson。虽然不知道原因是为什么。

使用fastJson有一个很大的缺陷,就是其命名与Android 原生的解析命名相同,所以在使用中很容易混淆。

解析对象 public static void parserObject(){ String json = "{\"user\":{\"name\":\"alex\",\"age\":18,\"isMan\":true}}"; //1, 获取对应实体类对象的字符串,当前为user的值。 该JSONObject 为org包中的。。 String userJson = new JSONObject(json).getJSONObject("user").toString(); //2 调用JSON.parserObject 解析 User user = JSON.parseObject(userJson, User.class); System.out.print(user); } User{name='alex', age=18, isMan=true, sex='null'} 解析数组 public static void parserArray(){ String json = "{\"user\":[{\"name\":\"alex\",\"age\":18,\"isMan\":true},{\"name\":\"mahao\",\"age\":16,\"isMan\":true}]}"; //1, 获取对应实体类对象的字符串,当前为user的值。 String userJson = new JSONObject(json).getJSONArray("user").toString(); //2 调用JSON.parseArray 解析 List users = JSON.parseArray(userJson, User.class); System.out.println(users.get(1)); } User{name='mahao', age=16, isMan=true, sex='null'} 构造json 数据 public static void wirteJson(){ Map map = new HashMap(); map.put("username","haha"); map.put("password",123456); String json = JSON.toJSONString(map); System.out.println(json); },object>,object> {"password":123456,"username":"haha"}

通过上面的例子看出,使用fastJson 更加的简单,方便。主要通过JSON.parseArray,JSON.paseObject,JSON.toJSONString进行数据的解析和生成。

GsonFormat

在上面的例子中,使用Gson,fastJson解析数据时,关键的便是实体类。 但有时候实体类非常复杂时,我们比着敲时很容易出错。

在这里使用GsonFormat插件,该插件为Android Studio的插件。

File -》 setting -》plugins -> 搜索GsonFormat,导入即可。

使用方式如下图:

点击Alt+insert

这里写图片描述

  • 上一篇:Android中activity的启动模式
  • 下一篇:Android动画TimeInterpolator(插值器)和TypeEvaluator(估值器)分析
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • Android开发JSON之如何使用FastJson

      Android开发JSON之如何使用FastJson

      2015-11-12 11:10

    网友点评
    t