安卓数据解析之 fastjson 的解析以及Gson解析

在安卓开发过程中的。我们经常使用的数据传递是以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>

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

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

时间: 2024-10-07 04:21:07

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

通过Gson解析Json数据

Json是一种数据格式,便于数据传输.存储.交换:Gson是一种组件库,可以把java对象数据转换成json数据格式. gson.jar的下载地址:http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22gson%22 一.Json数据样式 为了便于理解我们先来看看Json的数据样式: 1. 单个数据对象 { "id": 100, "body": "It is my post", "numbe

Gson 解析教程

Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等 本人fastJson用了两年,也是从去年才开始接触Gson,希望下面的总结会对博友有用,至于Gson与FastJson的对比,其实半斤八两的问题,不再赘述 第一步:在AS下面创建Java工程 并添加gson依赖 compile 'com.google.code.gson:gson:2.6.2' Gson的实例化方式: 1:Gson gson=newGson(); 2:通过GsonBuilder

Json解析与Gson解析

本文主要介绍json最原始的解析与google提供的gson工具类解析 ①json解析 1 /** 2 * 普通的json解析 3 * @param s 4 * @throws JSONException 5 */ 6 private void jsonJieXi(String s) throws JSONException { 7 //创建json对象 8 JSONObject jsonObject1 = new JSONObject(s); 9 String retcode = jsonOb

Retrofit Gson解析空字符串的问题

在实际开发项目中,服务器经常会用空字符串 "" 作为返回结果表示空值 ,但这在Gson当中就会遇到问题,如果这项数据的类型不是字符串,Gson解析就会报错 我们希望程序可以自动将空字符串解析为对应类型的空值,比如整型就解析为0,List型就解析为一个Empty List 这个问题可以说是我用Retrofit+Gson以来最大的一个坑,以至于我在研究时差不多都要把源码看完了 提一件离奇的事是,Gson在用整型解析空字符串时,报的居然是"Inavalid double"

Gson解析数组array和list容器

http://blog.csdn.net/lucky_bo/article/details/47657641 Gson解析数组和list容器 使用Gson解析首先需要加入架包文件:gson-2.2.4.jar 定义一个类Student: public class Student { String name="xiao"; String sex="男"; } 定义Java文件: public class ListToGson { public static void

Json解析速度比较-Android API、Gson、Fastjson

IOS现成的API里的json解析速度非常快,这里就不说了,今天对比一下Android里面json的解析库. 首先第一个是Android API里面自带的json解析,其次是谷歌提供的Gson解析库(开源),其次是在网上看到的解析很快速的阿里巴巴分享的Fastjson包.Android自带的json解析大家一定都很熟悉了,这里不介绍了,这里详细说说谷歌提供的另一套解析库Gson: gson的使用方法非常的简单.只需要将需要解析的json字符串和对应的Bean类xing型传递给GSON类的from

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

之前都是自己写后台,自己的server提供数据给client. 近期在看第三方的数据接口,訪问其它站点提供的信息.比方.我们可能自己收集的数据相当有限.可是网上提供了非常多关于天气预报.新闻.星座运势.身份证号.车辆违章.健康医疗.快递查询.ip查询.翻译等的api接口.基本返回数据为类型json和xml 我就喜欢简单便捷的东西.在这解析一下第三方新闻的接口返回的json数据: 我喜欢用谷歌提供的Gson,感觉比JSON去解析要简单.方便,快捷:当然了阿里巴巴提供的fastjson也是极好的.在

Android:使用Gson解析复杂的JSON数据

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,目前广泛使用.本文主要讲解android如何解析复杂格式的JSON数据,适合android初学者和初步接触JSON的人. 1.JSON相关介绍: 首先了解一下JSON的相关内容,JSON中的数据是以键值对的形式出现的.例如"name":"jack":这就是一个键值对,可以理解为name=jack.JSON中很重要的两个概念就是数组(array)和对象(object),初学者

75、JSON 解析库---FastJson, Gson

JSON 的简介: JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.用于数据转换传输, 通用于PHP,Java,C++,C#,Python等编程语言数据交换传输. 易于人阅读和编写,同时也易于机器解析和生成. 基本结构:对象.数组. Gson 的简介和特点: Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库.可以将一个 JSON 字符串转成一个 Java 对象,或者反过来. 快速.高效 代码量少