二.Gson中的fromJson()实现反序列化

相当强大,不仅可以转基本类型,还可以把相应格式的字符串转为list或map

    public static void main(String[] args) {
        Gson gson = new Gson();
        //1.将字符串转为int(在去掉双引号上感觉很强大)
        int i = gson.fromJson("\"250\"", int.class);
        System.out.println(i);
        //2.将字符串转为double(在去掉双引号上感觉很强大)
        double d = gson.fromJson("\"99.99\"", double.class);
        System.out.println(d);
        //3.将字符串转为boolean类型
        boolean b = gson.fromJson("true", boolean.class);
        System.out.println(b);
        //4.将字符串转为字符串类型(在去掉双引号上感觉很强大,但也存在限制,
        //   比如多个双引号时会报错)
        System.out.println("\"String\"");
        String str = gson.fromJson("\"String\"", String.class);
        System.out.println(str);
           System.out.println("\"I feel very \"good \"\"");
           //输出 ; "I feel very "good ""
           String str2 = gson.fromJson("\"I feel very \"good \"", String.class);
           //报错 : com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException
        // 5.将json格式的字符串转为map,但map中的value值如果还包含map格式或List型格式的值,则会被转换为
        //    class com.google.gson.internal.LinkedTreeMap或java.util.ArrayList,且之后下一级仍会被转换,而不
        //      是简单地用字符串代替(很强大)
        Map map = gson.fromJson("{\n" +
                "    \"date\":\"2019-02-25\",\n" +
                "    \"data\":[\n" +
                "        [\n" +
                "            {\n" +
                "                \"name\":\"why\",\n" +
                "                \"age\":18\n" +
                "            },\n" +
                "            {\n" +
                "                \"name\":\"xm\",\n" +
                "                \"age\":19\n" +
                "            }\n" +
                "        ],\n" +
                "        [\n" +
                "            {\n" +
                "                \"name\":\"xiaohong\",\n" +
                "                \"age\":20\n" +
                "            },\n" +
                "            {\n" +
                "                \"name\":\"xiaogou\",\n" +
                "                \"age\":21\n" +
                "            }\n" +
                "        ]\n" +
                "    ],\n" +
                "    \"school\":{\n" +
                "        \"address\":\"北京\",\n" +
                "        \"district\":\"昌平\"\n" +
                "    }\n" +
                "}", Map.class);
        System.out.println(map.get("school"));
        //输出 : {address=北京, district=昌平}
        System.out.println(map.get("school").getClass());
        //输出 : class com.google.gson.internal.LinkedTreeMap
        System.out.println(((Map) map.get("school")).get("address"));
        //输出 : 北京
        System.out.println(map.get("data"));
        //输出 : [[{name=why, age=18.0}, {name=xm, age=19.0}], [{name=xiaohong, age=20.0}, {name=xiaogou, age=21.0}]]
        System.out.println(map.get("data").getClass());
        //输出 : class java.util.ArrayList
        System.out.println(((List)map.get("data")).get(0));
        //输出 : [{name=why, age=18.0}, {name=xm, age=19.0}]
        System.out.println((((List)map.get("data")).get(0)).getClass());
        //输出 : class java.util.ArrayList
        System.out.println(((List)(((List)map.get("data")).get(0))).get(0).getClass());
        //输出 : class com.google.gson.internal.LinkedTreeMap
        //6.实体类字符串转实体类
        String usrStr = "{\"hisName\":\"why\",\"hisAge\":18,\"hisWeight\":100.0}";
        User usr = gson.fromJson(usrStr, User.class);
        System.out.println(usr.getHisName());
        //输出 : why

三.Gson中的toJson()实现序列化

1.将Object转为字符串,如果obj为json格式,某个key值为null,则不包含

    public static String objectToString(Object obj) {
        Gson gson = new Gson();
        String jsonObject = gson.toJson(obj);
        return jsonObject;

2.将Object转为字符串,如果obj为json格式,某个key值为null也包含

    public static String objToStringIncludeNull(Object obj) {
        GsonBuilder gsonBuilder = new GsonBuilder();
        String jsonString = gsonBuilder.serializeNulls().create().toJson(obj);
        return jsonString;
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("name","why");
        map.put("age","27");
        map.put("sex",null);
        map.put("address","");
        System.out.println(map);
        //输出 : {address=, sex=null, name=why, age=27}
        System.out.println(map.toString());
        //输出 : {address=, sex=null, name=why, age=27}
        System.out.println(objectToString(map));
        //输出 : {"address":"","name":"why","age":"27"}
        System.out.println(objToStringIncludeNull(map));
        //输出 : {"address":"","sex":null,"name":"why","age":"27"}
        User user = new User();
        user.setHisAge(18);
        // 字符串没设置值的话会默认为null,数字没设置值得话默认为0
        System.out.println(objectToString(user));
        //输出 :{"hisAge":18,"hisWeight":0.0}
        System.out.println(objToStringIncludeNull(user));
        //输出 :{"hisName":null,"hisAge":18,"hisWeight":0.0}
                    一.Gson中的fromJson()实现反序列化相当强大,不仅可以转基本类型,还可以把相应格式的字符串转为list或map    public static void main(String[] args) {        Gson gson = new Gson();        //1.将字符串转为int(在去掉双引号上感觉很强大)        int i = gson....
   1. class TestObjectToJson {  
   2.   private int data1 = 100;  
   3.   private String data2 = "hello";  
   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;  
   3. class TestJsonFromObject {  
   4.   private int data1;  
   5.   private String data2;  
   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;  
   6. public class TestGson {  
   8.     @SerializedName("first_field")  
   9.     private String field1;  
  11.     private String secondField;  
  13.     public TestGson(String param1, String param2) {  
  14.         field1 = param1;  
  15.         secondField = param2;  
  16.     }  
  17. }  
  19. TestGson obj = new TestGson("aaaa", "bbbbb");  
  20. Gson gson = new Gson
				
JSON 是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便;解析和生成的方式很多,Java中最常用的类库有:JSON-JavaGson、Jackson、FastJson等 一、Gson的基本用法 Gson提供了fromJson() 和toJson() 两个直接用于解析和生成的方法,前者实现反序列化,后者实现了序列化;同时每个方法都提供了重载方法 1)基本数据...
Gson类库有一个Gson类,这个Gson类提供了两个方法:toJson() 和fromJson(),我们主要就是调用这两个方法来分别实现序列化Java对象为JSON字符串和反序列化JSON字符串成Java对象。 通过代码示例来对Gson类的常用方法做一个简单介绍。
GSON使用概述 GSON弥补了JSON的许多不足的地方,在实际应用中更加适用于Java开发。在这里,我们主要讲解的是利用GSON来操作java对象和json数据之间的相互转换,包括了常见的对象序列化和反序列化的知识。 因为json有2种类型: 一种是对象,object -> {key:value,key:value,....
GSON完整包,包含三个jar包。 gson-2.2.4.jar GSON生成解析json数据的基本jar包; gson-2.2.4-javadoc.jar GSON API介绍文档包; gson-2.2.4-sources.jar GSON源码包。 下载一个玩玩吧!
JSON是一种文本形式的数据交换格式,它比XML更轻量、比二进制容易阅读和编写,调式也更加方便。其重要性不言而喻。解析和生成的方式很多,Java中最常用的类库有:JSON-JavaGson、Jackson、FastJson等。 http://json.org/json-zh.html
GSON完整包,包含三个jar包。 gson-2.8.0.jar GSON生成解析json数据的基本jar包; gson-2.8.0-javadoc.jar GSON API介绍文档包; gson-2.8.0-sources.jar GSON源码包。
Gson是谷歌提供的一个用于Java对象和JSON数据之间进行序列化和反序列化的库。下面列出了一些Gson常用方法: 1. toJson(Object obj):将Java对象转换成JSON字符串。 2. fromJson(String json, Class<T> classOfT):将JSON字符串转换成Java对象。 3. toJsonTree(Object obj):将Java对象转换成JsonElement对象。 4. toJson(JsonElement jsonElement):将JsonElement对象转换成JSON字符串。 5. fromJson(JsonElement json, Class<T> classOfT):将JsonElement对象转换成Java对象。 6. fromJson(Reader reader, Class<T> classOfT):将Reader对象中的JSON数据转换成Java对象。 7. fromJson(InputStream stream, Class<T> classOfT):将InputStream对象中的JSON数据转换成Java对象。 8. toJson(Object obj, Type typeOfSrc):将Java对象转换成JSON字符串,支持泛型。 9. fromJson(String json, Type typeOfT):将JSON字符串转换成Java对象,支持泛型。 10. toJson(JsonWriter writer, Object obj):将Java对象转换成JSON字符串,并输出到JsonWriter对象中。 11. fromJson(JsonReader reader, Type typeOfT):将JsonReader对象中的JSON数据转换成Java对象,支持泛型。 除此之外,Gson还提供了许多其他的方法和选项,如设置日期格式、忽略null字段等,可以根据具体需求进行使用。