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

 

转载于:https://www.cnblogs.com/laohanBlog/p/4226534.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gson是Google的一个开源项目,可以将Java对象转换JSON,也可能将JSON转换成Java对象Gson里最重要的对象有2个GsonGsonBuilder Gson有2个最基本的方法 1) toJson() – 转换java 对象JSON 2) fromJson() – 转换JSON到java对象 下面是几个小例子 1. toJson() example Java 代码 收藏代码 1. class TestObjectToJson { 2. private int data1 = 100; 3. private String data2 = "hello"; 4. } 5. 6. TestObjectToJson obj = new TestObjectToJson(); 7. Gson gson = new Gson(); 8. String json = gson.toJson(obj); class TestObjectToJson { private int data1 = 100; private String data2 = "hello"; } TestObjectToJson obj = new TestObjectToJson(); Gson gson = new Gson(); String json = gson.toJson(obj); 会输出 {"data1":100,"data2":"hello"} 2. fromJson() example Java 代码 收藏代码 1. import com.google.gson.Gson; 2. 3. class TestJsonFromObject { 4. private int data1; 5. private String data2; 6. } 7. 8. String json = "{'data1':100,'data2':'hello'}"; 9. Gson gson = new Gson(); 10. TestJsonFromObject obj = gson.fromJson(json, TestJsonFromObject.class); import com.google.gson.Gson; class TestJsonFromObject { private int data1; private String data2; } String json = "{'data1':100,'data2':'hello'}"; Gson gson = new Gson(); TestJsonFromObject obj = gson.fromJson(json, TestJsonFromObject.class); 3. 将Java对象的属性转换成指定的JSON名字 Java 代码 收藏代码 1. import com.google.gson.FieldNamingPolicy; 2. import com.google.gson.Gson; 3. import com.google.gson.GsonBuilder; 4. import com.google.gson.annotations.SerializedName; 5. 6. public class TestGson { 7. 8. @SerializedName("first_field") 9. private String field1; 10. 11. private String secondField; 12. 13. public TestGson(String param1, String param2) { 14. field1 = param1; 15. secondField = param2; 16. } 17. } 18. 19. TestGson obj = new TestGson("aaaa", "bbbbb"); 20. Gson gson = new Gson

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值