在安卓开发过程中的。我们经常使用的数据传递是以json格式传递。安卓

亲爹提供了我们Gson解析工具。点击下载Gson.jar

阿里巴巴FastJson是一个Json处理工具包,包含“序列化”和“反序列化”两部分,它具备例如以下特征:

速度最快。測试表明。fastjson具有极快的性能。超越任其它的Java Json parser。包含自称最快的JackJson;

功能强大。全然支持Java Bean、集合、Map、日期、Enum,支持范型。支持自省。无依赖,可以直接执行在Java SE 5.0以上版本号;支持Android;开源 (Apache 2.0)点击下载fastjson.jar



废话不多说了。直接上代码,首先来fastjson的把:

定义一个Person类

public class Person {
private int id;
private String name;
private String sex;
private int age;

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Person(int id, String name, String sex, int age) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}

public Person() {
super();
// TODO Auto-generated constructor stub
}

@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", sex=" + sex
+ ", age=" + age + "]";
}

}



主要解析的方法例如以下

public static void main(String[] args) {
Person p1 = new Person(1, "小强", "男", 24);
System.out.println(p1);// 输出没解析之前的
String pJsonStr = JSON.toJSONString(p1);
System.out.println(pJsonStr);// 输出转译之后的数据

List<person> list = new ArrayList<person>();
for (int i = 0; i < 10; i++) {
String sex;
Person p = new Person(i, "test" + i, sex = i % 2 == 0 ?

"男" : "女",
22);
list.add(p);
}
//
String pListJson = JSON.toJSONString(list, true);// 后面加true为格式化转换。不加true为一般转换
System.out.println(pListJson);// 输出数据

// 指定转换后的数据类型
List<person> plist = (List<person>) JSON.parseObject(pListJson,
new TypeReference<List<person>>() {
});
System.out.println(plist);
System.out.println(plist.get(0).getName());
}

</person></person></person></person></person>

FastJson完成,接下来直接贴Gson的代码吧

/**
* 将对象转换成json格式
*
* @param ts
* @return
*/
public static String objectToJson(Object ts) {
String jsonStr = null;
if (gson != null) {
jsonStr = gson.toJson(ts);
}
return jsonStr;
}

/**
* 将对象转换成json格式(并自己定义日期格式)
*
* @param ts
* @return
*/
public static String objectToJsonDateSerializer(Object ts,
final String dateformat) {
String jsonStr = null;
gson = new GsonBuilder()
.registerTypeHierarchyAdapter(Date.class,
new JsonSerializer<date>() {
@Override
public JsonElement serialize(Date src,
Type typeOfSrc,
JsonSerializationContext context) {
SimpleDateFormat format = new SimpleDateFormat(
dateformat);
return new JsonPrimitive(format.format(src));
}

}).setDateFormat(dateformat).create();
if (gson != null) {
jsonStr = gson.toJson(ts);
}
return jsonStr;
}

/**
* 将json格式转换成list对象
*
* @param jsonStr
* @return
*/
public static List<object> jsonToList(String jsonStr) {
List</object><object> objList = null;
if (gson != null) {
java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<List</object><object>>() {
}.getType();
objList = gson.fromJson(jsonStr, type);
}
return objList;
}

/**
* 将json格式转换成list对象。并准确指定类型
*
* @param jsonStr
* @param type
* @return
*/
public static List<?> jsonToList(String jsonStr, java.lang.reflect.Type type) {
List<?> objList = null;
if (gson != null) {
objList = gson.fromJson(jsonStr, type);
}
return objList;
}

/**
* 将json格式转换成map对象
*
* @param jsonStr
* @return
*/
public static Map<?, ?> jsonToMap(String jsonStr) {
Map<?, ?> objMap = null;
if (gson != null) {
java.lang.reflect.Type type = new com.google.gson.reflect.TypeToken<Map<?

, ?>>() {
}.getType();
objMap = gson.fromJson(jsonStr, type);
}
return objMap;
}

/**
* 将json转换成bean对象
*
* @param jsonStr
* @return
*/
public static Object jsonToBean(String jsonStr, Class<?> cl) {
Object obj = null;
if (gson != null) {
obj = gson.fromJson(jsonStr, cl);
}
return obj;
}

/**
* 将json转换成bean对象
*
* @param jsonStr
* @param cl
* @return
*/
@SuppressWarnings("unchecked")
public static <t> T jsonToBeanDateSerializer(String jsonStr, Class<t> cl,
final String pattern) {
Object obj = null;
gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new JsonDeserializer<date>() {
@Override
public Date deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context)
throws JsonParseException {
SimpleDateFormat format = new SimpleDateFormat(pattern);
String dateStr = json.getAsString();
try {
return format.parse(dateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}

}).setDateFormat(pattern).create();
if (gson != null) {
obj = gson.fromJson(jsonStr, cl);
}
return (T) obj;
}

/**
* 依据
*
* @param jsonStr
* @param key
* @return
*/
public static Object getJsonValue(String jsonStr, String key) {
Object rulsObj = null;
Map<?, ?> rulsMap = jsonToMap(jsonStr);
if (rulsMap != null && rulsMap.size() > 0) {
rulsObj = rulsMap.get(key);
}
return rulsObj;
}

</date></t></t></object></date>



也许有人认为这没什么卵用。个人认为写写更健康,说不定以

后忘了,能够直接找自己的。一起学习









安卓数据解析之 fastjson 的解析以及Gson解析的更多相关文章

  1. 通过Gson解析Json数据

    Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#s ...

  2. Gson解析的小例子

    最近解析些复杂的节点数据解析,用安卓自带的json解析比较麻烦所以只能用Gson解析,所以从网上下了点demo来看看 http://blog.csdn.net/tkwxty/article/detai ...

  3. Gson 解析教程

    Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gso ...

  4. Gson解析数组多类型元素

    本文的出现是为了解决以下需求:使用Gson对json数组进行解析,但是数组里面元素的类型是多种的.数据如下: {"list":[{ "type":0, &quo ...

  5. Gson解析数组和list容器

    Gson解析数组和list容器 使用Gson解析首先须要增加架包文件:gson-2.2.4.jar 定义一个类Student: public class Student { String name=& ...

  6. Android总结之json解析(FastJson Gson 对比)

    前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...

  7. Android 中的Json解析工具fastjson 、序列化、反序列化

    Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备 ...

  8. Android网络之数据解析----使用Google Gson解析Json数据

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. Gson解析第三方提供Json数据(天气预报,新闻等)

    之前都是自己写后台,自己的server提供数据给client. 近期在看第三方的数据接口,訪问其它站点提供的信息.比方.我们可能自己收集的数据相当有限.可是网上提供了非常多关于天气预报.新闻.星座运势 ...

随机推荐

  1. SpringCloud中eureka配置心跳和剔除下线的服务的时间

    在默认的springCloud中eureka注册中心在服务下线时表现的非常不灵敏,用惯了dubbo的zk注册中心表示很不习惯,eureka设计的本意是在服务不会频繁上下线和网络稳定的内网,这种设计在生 ...

  2. 小结java自带的跟锁相关的一些类

    java.util.concurrent包下的一些跟锁相关的类列表  类  简介 locks.Lock接口 Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作.此 ...

  3. Centos7.4下keepalived-1.3.5的安装使用

    keepalived两个功能,一个是使lvs使用的vip高可用,一个是监控下游各个子节点的对应端口是否正常工作,以保证快速剔除坏掉的节点. keepalived默认的yum 1.3.5有BUG,根本跑 ...

  4. ssh无法登录,提示Pseudo-terminal will not be allocated because stdin is not a terminal.

    当远程通过ssh登录主机时出现Pseudo-terminal will not be allocated because stdin is not a terminal. 错误   字面意思是伪终端将 ...

  5. JavaScript的NaN-唯一 一个自己不等于自己的对象!!

    JavaScript的NaN为什么不等于NaN 在JS中 Object === Object 感觉没有任何问题 这两个都代表的一个东西 但是如果你试过 NaN === NaN 是返回false为什么呢 ...

  6. [解决]java.lang.IllegalArgumentException: Bad level "DEBUG"

    Tomcat启动报错,搞得烦的一比.常规思维就会迷瞪,谁让tomcat的日志级别特殊ne.... http://tomcat.apache.org/tomcat-7.0-doc/ 错误现象: Hand ...

  7. phpBB3.1和3.2

    闲逛看到一个帖子, phpBB3的论坛经常被机器人注册攻击, 要找人做拦截. 出于兴趣, 联系了一下. 论坛是一个做健康养老调查的社会机构的, 版本3.1, 十年前我还在更新phpbb中文包的时候, ...

  8. MBProgressHUD 的类扩展方法用法

    #import "MBProgressHUD.h" @interface MBProgressHUD (Add) + (void)showError:(NSString *)err ...

  9. rabbitMQ概念详细介绍

    1. 历史 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有 ...

  10. Google Chrome 浏览器插件开发学习

    2014/11/16 Google Chrome 浏览器插件开发学习 因笔记存有文件,不便发表在cnblogs上,请到evernote里找笔记 "Google Chrome 浏览器插件开发学 ...