Gson:Object和Json的转换

GSON使用:

1、  使用Gson的toJson()方法将对象转换成Json字符串:

方法:Gson.toJson(Objectsrc)

person.java:

         public class Person {

 private String name;

         private int age;

public String getName() {

                   return name;

         }

 

         public void set Name(String name) {

                   this.name = name;

         }

 

         public int getAge() {

                   return age;

         }

 

         public void setAge(intage) {

                   this.age = age;

         }

}

 

GsonTest.java:

         public class GsonTest {

         public static void main (String[] args){ 

         Gson gson = new Gson();

         List<Person> persons = newArrayList<Person>();

 

         Person p1 = new Person();

         p1.setName("张三");

         p1.setAge(23);

        

         Person p2 = new Person();

         p2.setName("李四");

         p2.setAge(24);

        

         persons.add(p1);

         persons.add(p2);

        

         System.out.println(persons);

         String str = gson.toJson(persons); //对象转换为json

         System.out.println(str);

}

}

 

输出得到:[Person@688fd95d, Person@3c079e4c]

[{"name":"张三","age":23},{"name":"李四","age":24}]

 

直接打印对象实际上打印的是Object的toString方法返回的字符串,该字符串由类名(对象是该类的一个实例)、标记符“@”和此对象哈希码的无符号十六进制表示组成。即:

         getClass().getName()+ ‘@’ + Integer.toHexString(hashCode())

 

 

2、gson的反序列化:gson提供了fromJson()方法来实现从Json相关对象到java实体的方法。

方法:Gson.fromJson(String json, Class<Person>classOfT) throws JsonSyntaxException

 

 

代码: JsonTest.java

public class JsonTest {

         public static void main(String[] args) throws JSONException{

                   JSONObject pJson = new JSONObject();

                   pJson.put("name", "王五");

                   pJson.put("age",25);

                   System.out.println(pJson);

 

                   Gson gson = new Gson();

                   Person p = gson.fromJson(pJson.toString(), Person.class);

                   System.out.println(p);

         }

}

提供两个参数,分别是json字符串以及需要转换对象的类型。

输出结果:{"age":25,"name":"王五"}

Person@4d3806b6

 

第二种,JSONArray转换成列表类型:

方法:Gson.fromJson(String json, Type typeOfT)throws JsonSyntaxException

代码:JsonArrayTest.java

public class JsonArrayTest {

         public staticvoid main(String[] args) throws JSONException{

                   JSONObject p01 = new JSONObject();             

                   p01.put("name", "赵六");

                   p01.put("age", 26);

                  

                   JSONObject p02 = new JSONObject();

                   p02.put("name", "秦七");

                   p02.put("age",27);

                  

                   JSONArray ja = new JSONArray();

                   ja.put(p01);

                   ja.put(p02);

                   System.out.println(ja);

                  

                   Gson gson = new Gson();

                   List<Person> ps = gson.fromJson(ja.toString(), new TypeToken<List<Person>>(){}.getType());

                   System.out.println(ps);

         }

}

 

输出得到:

[{"age":26,"name":"赵六"},{"age":27,"name":"秦七"}]

[Person@2cf5ebcc, Person@454bb523]

 

TypeToken是gson提供的数据类型转换器,可以支持各种数据集合类型转换。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值