您现在的位置是:首页 > 电脑技术查询 > web开发

Json转换凶器Gson之实例三-Map处理(上)

编辑:chaxungu时间:2022-10-10 23:24:20分类:web开发

Json转换利器Gson之实例三-Map处理(上)

Map的存储结构式Key/Value形式,Key 和 Value可以是普通类型,也可以是自己写的JavaBean(本文),还可以是带有泛型的List(下一篇博客).本例中您要重点看如何将Json转回为普通JavaBean对象时TypeToken的定义.

 

实体类:

 

 

 

public class Point {      private int x;      private int y;        public Point(int x, int y) {          this.x = x;          this.y = y;      }        public int getX() {          return x;      }        public void setX(int x) {          this.x = x;      }        public int getY() {          return y;      }        public void setY(int y) {          this.y = y;      }        @Override      public String toString() {          return "Point [x=" + x + ", y=" + y + "]";      }    }  


测试类:

 

 

import java.util.LinkedHashMap;  import java.util.Map;    import com.google.gson.Gson;  import com.google.gson.GsonBuilder;  import com.google.gson.reflect.TypeToken;    public class GsonTest3 {        public static void main(String[] args) {          Gson gson = new GsonBuilder().enableComplexMapKeySerialization()                  .create();            Map<Point, String> map1 = new LinkedHashMap<Point, String>();// 使用LinkedHashMap将结果按先进先出顺序排列          map1.put(new Point(5, 6), "a");          map1.put(new Point(8, 8), "b");          String s = gson.toJson(map1);          System.out.println(s);// 结果:[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]]            Map<Point, String> retMap = gson.fromJson(s,                  new TypeToken<Map<Point, String>>() {                  }.getType());          for (Point p : retMap.keySet()) {              System.out.println("key:" + p + " values:" + retMap.get(p));          }          System.out.println(retMap);            System.out.println("----------------------------------");          Map<String, Point> map2 = new LinkedHashMap<String, Point>();          map2.put("a", new Point(3, 4));          map2.put("b", new Point(5, 6));          String s2 = gson.toJson(map2);          System.out.println(s2);            Map<String, Point> retMap2 = gson.fromJson(s2,                  new TypeToken<Map<String, Point>>() {                  }.getType());          for (String key : retMap2.keySet()) {              System.out.println("key:" + key + " values:" + retMap2.get(key));          }        }  }  


结果:

 

 

[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]]  key:Point [x=5, y=6] values:a  key:Point [x=8, y=8] values:b  {Point [x=5, y=6]=a, Point [x=8, y=8]=b}  ----------------------------------  {"a":{"x":3,"y":4},"b":{"x":5,"y":6}}  key:a values:Point [x=3, y=4]  key:b values:Point [x=5, y=6]