实用Gson进行json数据转换

gson和其他现有java json类库最大的不同时gson需要序列化得实体类不需要使用annotation来标识需要序列化得字段,同时gson又可以通过使用annotation来灵活配置需要序列化的字段。
下面是一个简单的例子:
    public class Person { 
     
        private String name; 
        private int age; 
     
        /**
         * @return the name
         */ 
        public String getName() { 
            return name; 
        } 
     
        /**
         * @param name the name to set
         */ 
        public void setName(String name) { 
            this.name = name; 
        } 
     
        /**
         * @return the age
         */ 
        public int getAge() { 
            return age; 
        } 
     
        /**
         * @param age the age to set
         */ 
        public void setAge(int age) { 
            this.age = age; 
        } 
         
        @Override 
        public String toString() 
        { 
            return name + ":" +age; 
        } 
    } 
实体很简单,两个字段,当然实体中的字段也可以是List或者Set类型的。
    Gson gson = new Gson(); 
    List<Person> persons = new ArrayList<Person>(); 
    for (int i = 0; i < 10; i++) { 
         Person p = new Person(); 
         p.setName("name" + i); 
         p.setAge(i * 5); 
         persons.add(p); 
    } 
    String str = gson.toJson(persons); 

上面的代码重点是Gson对象,它提供了toJason()方法将对象转换成Json字符串,上面代码的str对象值为:
[{"name":"name0","age":0},{"name":"name1","age":5},{"name":"name2","age":10},{"name":"name3","age":15},{"name":"name4","age":20},{"name":"name5","age":25},{"name":"name6","age":30},{"name":"name7","age":35},{"name":"name8","age":40},{"name":"name9","age":45}]
下面来看看gson的反序列化,Gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。
在日常应用中,我们一般都会碰到两种情况,转成单一实体对象和转换成对象列表或者其他结构。
先来看第一种:
比如json字符串为:[{"name":"name0","age":0}]
代码:
    Person person = gson.fromJson(str, Person.class); 

提供两个参数,分别是json字符串以及需要转换对象的类型。
第二种,转换成列表类型:
代码:
    List<Person> ps = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType()); 
    for(int i = 0; i < ps.size() ; i++) 
    { 
         Person p = ps.get(i); 
         System.out.println(p.toString()); 
    } 
可以看到上面的代码使用了TypeToken,它是gson提供的数据类型转换器,可以支持各种数据集合类型转换。

时间: 2024-10-10 04:39:17

实用Gson进行json数据转换的相关文章

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

[正文] 文章回顾: Android网络之数据解析----SAX方式解析XML数据 一.Json数据的介绍                                                                                                                 Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式,这使得Jso

json-关于gson解析Json数据出现错误

问题描述 关于gson解析Json数据出现错误 代码如下: private ResponseGetUserByUserId resp; public void onSuccess(int statusCode Header[] headers byte[] responseBody) { String jsonData = new String(responseBody); Log.d(TAGSuccess: "" + jsonData); resp = new Gson().from

Android开发之Gson解析Json嵌套数据

Gson解析复杂的json数据           在这里介绍解析json数据的另外一种方法就是通过Gson解析,对于解析比较简单的json数据我就不介绍了来一个比较复杂一点的json数据,如下面我们要解析的一个json数据: [java] view plaincopy String json = {"a":"100","b":[{"b1":"b_value1","b2":"b

ava json-用java的谷歌库gson解析JSON,如下的json数据,该如何定义java类??

问题描述 用java的谷歌库gson解析JSON,如下的json数据,该如何定义java类?? 求高人指点,用java的谷歌库gson解析JSON,如下的json数据,该如何定义java类?? 在线等............... { "00:00:8e:d7:ba:ac:88:47": { "flow-mod-3": { "version": 1, "type": "FLOW_MOD", "le

关于Json数据转换,我所用jar包是json-20151123.jar,在linux中执行不了

问题描述 关于Json数据转换,我所用jar包是json-20151123.jar,在linux中执行不了 关于Json数据转换,我是用的这个jar包json-20151123.jar,在win中可以运行,但是在linux中执行new JSONObject(strJosn);时就走不动了,也不报异常. 请问这是什么问题呢?排查了很久要没发现是为什么 解决方案 参考:http://download.csdn.net/detail/chenbb110/4293395 解决方案二: 换个json包吧.

我的Android进阶之旅------&amp;gt;解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题

1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: [ { id: "NEW2016062800875700", from: "腾讯新闻客户端", qqnews_download_url: "http://inews.qq.com/m?refer=openapi_for_xiaotiancai",

gson-在Android中使用Gson解析json

问题描述 在Android中使用Gson解析json public class GeRen extends Activity { private ArrayList s_list; private TextView type,opendate,name,sex,enddate; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCrea

利用GSON解析JSON数据

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools

Gson获得json数据数组内嵌问题

问题描述 Gson获得json数据数组内嵌问题 {resultcode"": ""200""reason"": ""successed!""result"": {sk"": {temp"": ""24""wind_direction"": ""西风&