首页 > Java开发 > Json转换利器Gson之实例三-Map处理(上)

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

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

实体类:

[java][/java]

view plaincopy

  1. public class Point {
  2.     private int x;
  3.     private int y;
  4.     public Point(int x, int y) {
  5.         this.x = x;
  6.         this.y = y;
  7.     }
  8.     public int getX() {
  9.         return x;
  10.     }
  11.     public void setX(int x) {
  12.         this.x = x;
  13.     }
  14.     public int getY() {
  15.         return y;
  16.     }
  17.     public void setY(int y) {
  18.         this.y = y;
  19.     }
  20.     @Override
  21.     public String toString() {
  22.         return "Point [x=" + x + ", y=" + y + "]";
  23.     }
  24. }

测试类:

[java][/java]

view plaincopy

  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. import com.google.gson.Gson;
  4. import com.google.gson.GsonBuilder;
  5. import com.google.gson.reflect.TypeToken;
  6. public class GsonTest3 {
  7.     public static void main(String[] args) {
  8.         Gson gson = new GsonBuilder().enableComplexMapKeySerialization()
  9.                 .create();
  10.         Map<Point, String> map1 = new LinkedHashMap<Point, String>();// 使用LinkedHashMap将结果按先进先出顺序排列
  11.         map1.put(new Point(5, 6), "a");
  12.         map1.put(new Point(8, 8), "b");
  13.         String s = gson.toJson(map1);
  14.         System.out.println(s);// 结果:[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]]
  15.         Map<Point, String> retMap = gson.fromJson(s,
  16.                 new TypeToken<Map<Point, String>>() {
  17.                 }.getType());
  18.         for (Point p : retMap.keySet()) {
  19.             System.out.println("key:" + p + " values:" + retMap.get(p));
  20.         }
  21.         System.out.println(retMap);
  22.         System.out.println("----------------------------------");
  23.         Map<String, Point> map2 = new LinkedHashMap<String, Point>();
  24.         map2.put("a", new Point(3, 4));
  25.         map2.put("b", new Point(5, 6));
  26.         String s2 = gson.toJson(map2);
  27.         System.out.println(s2);
  28.         Map<String, Point> retMap2 = gson.fromJson(s2,
  29.                 new TypeToken<Map<String, Point>>() {
  30.                 }.getType());
  31.         for (String key : retMap2.keySet()) {
  32.             System.out.println("key:" + key + " values:" + retMap2.get(key));
  33.         }
  34.     }
  35. }

结果:

[plain][/plain]

view plaincopy

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

实例代码下载: http://download.csdn.net/detail/lk_blog/4387822

 

相关文章推荐:

Json转换利器Gson之实例一-简单对象转化和带泛型的List转化

http://www.devba.com/index.php/archives/1702.html
Json转换利器Gson之实例二-Gson注解和GsonBuilder

http://www.devba.com/index.php/archives/1703.html

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

http://www.devba.com/index.php/archives/1704.html
Json转换利器Gson之实例四-Map处理(下)

http://www.devba.com/index.php/archives/1705.html
Json转换利器Gson之实例五-实际开发中的特殊需求处理

http://www.devba.com/index.php/archives/1706.html
Json转换利器Gson之实例六-注册TypeAdapter及处理Enum类型

http://www.devba.com/index.php/archives/1707.html


本文固定链接: http://www.devba.com/index.php/archives/1704.html | 开发吧

报歉!评论已关闭.