Android中 GsonFormat插件解析Jason 数据+和风天气接口解析案例

首先 转载自http://www.cnblogs.com/androidsuperman/p/4579249.html     感谢 @西北野狼  同学。

第一部分: GsonFormat 插件基本使用方法

很久以前写json解析用原始的解析json的方法,后来为了加快开发进度,开始使用gson,fastjson等第三方jar包来进行json解析,为了保持apk足够小,不因为引入jar包导致apk文件过大,选择使用gson来加速json解析,当然,去年androidstudio 1.0版本出来,很多人开始使用androidstudio,当然studio有很多方便开发的插件加速应用的开发,减少开发者的劳动力。

今天推荐个工具就是:gsonformat

下载地址:

https://github.com/zzz40500/GsonFormat

用过后表示,怎么这么酸爽的呢,哈哈

安装流程:

Setting-->plugins-->

使用:

自定义个javaBean(无任何内容,就一个空的类)

首先复制你要解析的json

然后alt+insert弹出如下界面

粘贴到如下界面:

点击ok,自动生成对应javaBean的语句:

然后就是根据json来进行json to bean的转换了

提供两工具类:

  1.  1 import java.util.List;
     2 /**
     3  * TODO: json工具类
     4  *
     5  * @author soyoungboy
     6  * @date 2014-11-8 下午2:32:24
     7  */
     8 public abstract class Json {
     9     private static Json json;
    10     Json() {
    11     }
    12     public static Json get() {
    13         if (json == null) {
    14             json = new GsonImpl();
    15         }
    16         return json;
    17     }
    18     public abstract String toJson(Object src);
    19     public abstract <T> T toObject(String json, Class<T> claxx);
    20     public abstract <T> T toObject(byte[] bytes, Class<T> claxx);
    21     public abstract <T> List<T> toList(String json, Class<T> claxx);
    22 }

     1 public class GsonImpl extends Json {
     2     private Gson gson = new Gson();
     3     @Override
     4     public String toJson(Object src) {
     5         return gson.toJson(src);
     6     }
     7     @Override
     8     public <T> T toObject(String json, Class<T> claxx) {
     9         return gson.fromJson(json, claxx);
    10     }
    11     @Override
    12     public <T> T toObject(byte[] bytes, Class<T> claxx) {
    13         return gson.fromJson(new String(bytes), claxx);
    14     }
    15     @Override
    16     public <T> List<T> toList(String json, Class<T> claxx) {
    17           Type type = new TypeToken<ArrayList<T>>() {}.getType();
    18              List<T> list = gson.fromJson(json, type);
    19         return list;
    20     }
    21 }

然后就是一句话,完美解析json了:

  1. 1 JavaBean bean =GsonImpl.get().toObject(json,JavaBean.class);

完美解析json就是这么简单,就是这么酸爽。

解析json的工具类来自lite君的github的轮子代码。

https://github.com/litesuits/android-lite-http/tree/master/library/src/com/litesuits/http/data

第二部分:使用GsonFormat 解析  和风天气接口数据

和风天气:http://www.heweather.com/     每日3000次访问量,对我们业余爱好者足够了,拿来做个天气预报DEMO不错。

首先是从和风天气获得的天气数据,Jason 格式, 放到 jason.parse.online.fr上看是这样的:

但是!!!!!    按照第一部分的方法,个Jason  数据复制进去,点OK 你会发现它提示   Parse err!   为什么了,因为这个和风天气奇葩的Jason数据,第一个KEY是 "HeWeather data service 3.0" ,,这里的 空格、“.”都是不合法的,导致它解析不出对应得实体类。    那怎么办了?

首先,解析的时候直接 把接口方法的Jason数据(上图左边部分) 的第一行,第一个KEY,也就是    "HeWeather data service 3.0" 替换成 "HeWeatherdataservice",去掉空格以及3.0, 复制进GsonFormat插件的粘贴板,点击OK,你会发现解析成功了。

然后,把网页返回的Json原始数据也做上述 处理,再解析。  实体类 和 要解析的数据当然要保持一致对吧~

这里我用了 StringBulder的 deleteCharAt 方法,按照字符串的下标把空格和 “3.0”去掉了,,然后, 用第一张说的一行代码,Json解析搞定~~~  调试看我的weatherBean  这个对象里,数据都已经乖乖的在那里了!!

总结:搞了我好半天,这个格式不规范的Jason数据,不过也算找到了 处理方法,接口得到的Jason数据要是不规范,可以先自己处理成规范的格式,,用JasonFormat插件进行解析,然后程序里在HTTP方式获取到Jason  String后,也用代码处理成一样的格式。  这样,实体类和Jason String对应起来,格式一致。  接下来,就是一行代码搞定的事了 。。。。。是不是 从此Json 解析都能2分钟搞定呢???~~~  喜欢请点赞!

时间: 2024-11-02 11:11:37

Android中 GsonFormat插件解析Jason 数据+和风天气接口解析案例的相关文章

IOS开发之——四种方法解析Jason数据(转)

本文将介绍TouchJson. SBJson .JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,TouchJson和SBJson需要下载他们的库 TouchJson包下载: http://download.csdn.net/detail/enuola/4523169 SBJson 包下载: http://download.csdn.net/detail/enuola/4523177 JSONKit包下载:http://download.csdn.net/detail

Android中向SD卡读写数据,读SD卡和手机内存

package com.example.sdoperation; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import android.support.v7.app.Actio

Android中使用File文件进行数据存储

Android中使用File文件进行数据存储 上一篇学到使用SharedPerences进行数据存储,接下来学习一下使用File进行存储 我们有时候可以将数据直接以文件的形式保存在设备中, 例如:文本文件,图片文件等等 使用File进行存储操作主要使用到以下的 ①:public abstract FileInputStream openFileInput (String name) 这个主要是打开文件,返回FileInputStream ②:public abstract FileOutputS

在Android中利用SQLite实现对数据的增删查改

停更了一天,I'm back again~~当我们需要操作大量的数据时,我们首先想到的当然是数据库,因为可以通过简单的语句实现数据的增删改查,在Android中,我们不使用SQL或者ORACLE,我们使用SQLite,因为它占用资源更少,而语句格式与SQL语句一样. 首先,我们来在Android中实现数据库的创建与增删改查,引用数据库的类时,不再继承常用的Activity类,而是继承Android中的SQLiteOpenHelper,创建一个构造方法,四个参数分别是(Context contex

android中的内存泄露查找与常见的内存泄露案例分析

常见的内存泄露查找方法请参见:http://hukai.me/android-performance-patterns/ 这篇文章是google发布的android性能优化典范示例,对于渲染.内存GC与电量消耗都做了好的示范. 这里我总结了下,android中常见的内存泄露 1.类中调用registerReceiver后未调用unregisterReceiver(). 在调用registerReceiver后,若未调用unregisterReceiver,其所占的内存是相当大的. 这种情况常见于

Android中实现跨app之间数据的暴露与接收

例如一个小项目:实现单词本的添加单词等功能 功能:不同的方式实现跨app之间数据的暴露与接收 暴露端app:实现单词的添加(Word.Translate),增删改查: 接收端app:模糊查询,得到暴露端的数据. 暴露端主页及布局: 1.布局: 主页布局:ListView.TextView(empty) item布局:TextView(单词).TextView(翻译) 添加或修改单词的Dialog布局:EditText(hint="word").EditText(hint="t

Android中ListView分页加载数据

熟悉Android的朋友们都知道,不管是微博客户端还是新闻客户端,都离不开列表组件,可以说列表组件是Android数据展现方面最重要的组件,我们今天就要讲一讲列表组件ListView加载数据的相关内容.通常来说,一个应用在展现大量数据时,不会将全部的可用数据都呈现给用户,因为这不管对于服务端还是客户端来说都是不小的压力,因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.比如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个“加载更多”按钮,用户点击后,加载

Android中ListView分页加载数据-转

Android应用开发中,采用ListView组件来展示数据是很常用的功能,当一个应用要展现很多的数据时,一般情况下都不会把所有的数据一次就展示出来,而是通过分页的形式来展示数据,个人觉得这样会有更好的用户体验.因此,很多应用都是采用分批次加载的形式来获取用户所需的数据.例如:微博客户端可能会在用户滑动至列表底端时自动加载下一页数据,也可能在底部放置一个"查看更多"按钮,用户点击后,加载下一页数据. 下面通过一个Demo来展示ListView功能如何实现:该Demo通过在ListVie

Android中常用的五种数据存储方式

第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口 令密码等 核心原理: 保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息.通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/<package name