安卓数据解析之 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>



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

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









上一篇:SQL注入的绕过


下一篇:Tarjan+缩点【强连通分量】【模板】