gson:对象与json的转换

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

方法:Gson.toJson(Object src)

person.java

public class Person {
private String name;
    private int age;
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;
    }

 

 

GsonTest.java

public class GsonTest {
    public static void main (String[] args){

    Gson gson = new Gson();
    List<Person> persons = new ArrayList<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);
    }
}

输出结果:

{"age":25,"name":"王五"}

Person@4d3806b6

 

JSONArray转换成列表类型:

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

JsonArrayTest.java

public class JsonArrayTest {
    public static void 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提供的数据类型转换器,可以支持各种数据集合类型转换。

 

posted @ 2015-01-15 15:54  花生丿牛奶  阅读(622)  评论(0编辑  收藏  举报