很好用的Google 开源项目Gson在java中解析和创建json格式的数据

来源:互联网 发布:淘宝订单不能提前收款 编辑:程序博客网 时间:2024/06/11 23:28
    Gson是一个开源的java库,项目主页http://code.google.com/p/google-gson/。其可以把一个java对象转换成json格式,也可以把一个json格式的字符串,转换成一个对象,虽然其介绍上说这样转换可以,偶亲测没有成功,也许是个bug了,不过一般把对象转换成字符以及对json格式的数据进行解析这些功能已经完全够用了,而且其还支持java的泛型对象,比如HashMap,ArrayList等

    那么什么是json呢,参见 http://www.json.org/json-zh.html官方对其的介绍,在这里就不罗嗦了,简单的说其就是一种JavaScript的数据交换格式。

     json其中有两个类非常有用且常用,一个是Gson,另一个是JsonParser,前者提供了把java对象转换成json格式字符串的功能,后者则负责解析Json格式数据,看如下源码

 -----------------------------------------------------------

    这是个简单的对象,其中包含两个字符类型,和一个double类型的数据

public class Employee {

 

    String name = "Jone";

    double salary = 1000;

    String sex = "M";

 

    public Employee() {

    }

}

 

使用Gson把该对象转换成json格式数据

Gson gson = new Gson();//初始gson对象

String json = gson.toJson(new Employee());//调用Gson的方法toJson把对象转换

System.out.print(json);

 

输出json的数据格式如下

{"name":"Jone","salary":1000.0,"sex":"M"}

 -----------------------------------------------------------

 

再看一个java内置对象HashMap的例子

HashMap map = new HashMap();//初始化一个map对象

map.put("name", "Tom");  //存入数据

    map.put("salary", 1000);

    map.put("sex", "M");

    Gson gson = new Gson();

    String json = gson.toJson(map); //开始转换

System.out.print(json);

 

输出结果如下

{"sex":"M","name":"Tom","salary":1000}

 

如此简单!

 -----------------------------------------------------------

 

接下来再看该库提供的解析json的功能

首先定义如下的json数据,其中name是个json数组

String json = "{/"name/":[/"Jone/",/"Tom/",/"Jim/",/"Jerry/"],/"manager/":/"Jone/"}";

JsonParser jsonparer = new JsonParser();//初始化解析json格式的对象

      //JsonArray是该库提供的存放解析后的Json数组的对象,首先调用JsonParser的getAsJsonObject的方法把

      //字符串转换为该库专用的json 的对象

      //然后再调用json对象的getAsJsonArray方法得到一个name的json格式数组,参数为json格式数据中的数组名

      JsonArray jsonarray = jsonparer.parse(json).getAsJsonObject().getAsJsonArray("name");

     //接下来,打印该数组中的内容

      for(int  i=0;i<jsonarray.size();i++)

      {

         String name= jsonarray.get(i).getAsString();

         System.out.println(name);

      }

 结果如下

Jone

Tom

Jim

Jerry

 如果想得到键manager的内容如下

jsonparer.parse(json).getAsJsonObject().get("manager").getAsString()

 注意:JsonObject的方法get(“manager”)是得到一个JsonElement元素,然后再调用该元素的getAsString()方法得到及键值,如果不调用getAsString()方法,输出结果如下”Jone”是加引号的

0 0
原创粉丝点击