标签:
Gson是google的一个Json库,使用非常简单。在Java中,只要引入包,创建对象就可以用了。
fromJson是Gson提供的一个方法。用来将一个Json数据转换为对象。调用方法是:new Gson().fromJson(Json_string,class)
需要注意的是,它会“尽量”转换出对象,哪怕得到的对象从数据上看是不完整的。
这样,可以通过一个Json数据转换出多种类型的对象,完全看使用者的需求。当用XSLT格式化XML文件时也是这种思路。
需要注意的是,在调用fromJson时,参数Json_string的情况决定了返回值的情况:null、对象还是抛出异常
再说下这个”尽量“。看起来是有副作用的。比如原始数据完全提供错了,通过fromJson也能得到一个对象实体。而这种实体可能是不可用的。所以,基本上需要自己增加对象可用性验证代码,在通过fromJson获得了非null对象后,进行一次验证。
当然好处也是大大的。比如可以将一次从服务器获取的数据转换成不同的对象,展示在不同的地方。所以,应该是利大于弊。
举例:
import com.google.gson.Gson; public class TestJson { private int age; private String name; public String show() { return new String("name:" + name + "/age:" + age); } public static void main(String[] args) { String[] source =new String[]{ "", "abc", "{}", "{\"nick_name\":\"Jack\"}", "{\"name\":\"Anna\",\"id\":5}", "{\"name\":\"Pluto\",\"age\":15,\"id\":10}" }; Gson g=new Gson(); TestJson x=null; StringBuffer info=null; for(int i=0;i<source.length;i++) { info=new StringBuffer(); info.append(i).append(":").append(source[i]).append("\n\t"); try { x=g.fromJson(source[i], TestJson.class); info.append((x == null) ? "NULL" : x.show()); }catch(Exception e) { info.append(e.getClass().getName()); } System.out.println(info.toString()); } } }
运行的结果是:
0: NULL 1:abc com.google.gson.JsonSyntaxException 2:{} name:null/age:0 3:{"nick_name":"Jack"} name:null/age:0 4:{"name":"Anna","id":5} name:Anna/age:0 5:{"name":"Pluto","age":15,"id":10} name:Pluto/age:15
标签:
原文地址:http://www.cnblogs.com/znyyjk/p/5432156.html