Java_MyGson

来源:互联网 发布:mac装双系统内存不足 编辑:程序博客网 时间:2024/06/11 06:46
package com.tangguoqiang;import java.lang.reflect.Type;import java.util.LinkedList;import java.util.List;import com.google.gson.Gson;import com.google.gson.annotations.Expose;import com.google.gson.annotations.SerializedName;import com.google.gson.reflect.TypeToken;/** * Gson用法简单总结 * @author 唐国强 * */public class MyGson {public static void main(String[] args) {Person person = new Person("郑秋冬",22,'男',"北海第一监狱");Person person2 = new Person("熊青春",23,'女',"null");Person person3 = new Person("林拜",30,'男',"北京");Type listType = new TypeToken<List<Person>>() {}.getType(); List<Person> target = new LinkedList<Person>(); target.add(person);target.add(person2);target.add(person3);System.out.println("转换前的对象信息:"+target.toString());Gson gson = new Gson(); String json = gson.toJson(target, listType); System.out.println("序列化后的信息:"+json);List<String> target2 = gson.fromJson(json, listType);System.out.println("反序列化后的对象信息"+target2.toString());//增强功能//GsonBuilder用来生成Gson对象. 规定Gson的序列化和返序列化时的格式等内容.//如:// Gson gson = new GsonBuilder()     //            .registerTypeAdapter(Id.class, new IdTypeAdapter())   //            .enableComplexMapKeySerialization() //            .serializeNulls()//强制序列化null//            .setDateFormat(DateFormat.LONG)//            .setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE)//会把字段首字母大写//            .setPrettyPrinting() //            .setVersion(1.0)    //            .create();//字符集问题//一般来说,服务器端传回来的JSON串中的中文默认字符编码格式为UNICODE格式,形式如下所示://\\u00e5\\u00bf\\u00ab\\u00e7\\u0082\\u00b9\\u00e5\\u0090\\u00a7,\\u00e7////值得注意的是,这里并不是直接可以使用的UNICODE串,因为前边不是一个\而是\\,//这样的结果就是\\u00e5并不是一个BYTE而是一个长度为6的字符串(\\被转义识别成一个字符了).//似乎没有什么直接的办法去转义了.于是只有自己动手写一个间接的转换方法.}}class Person{@Expose//加此注解的才序列化private String name;//修改序列化输出的名字@SerializedName("年龄")private int age;transient private char sex;//序列化时忽略sex字段private String addr;public Person(String name, int age, char sex, String addr) {super();this.name = name;this.age = age;this.sex = sex;this.addr = addr;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", addr=" + addr + "]";}}

原创粉丝点击