1.看看map的特殊处理:
1.Point.java:
package com.wds.json; public class Point { private int x; private int y; public Point() { super(); } public Point(int x, int y) { super(); this.x = x; this.y = y; } @Override public String toString() { return "Point[x="+x+",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; } }
Student.java:
package com.wds.json; import java.util.Date; import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; public class Student { private int id; @Expose private String name; @Expose @SerializedName("bir") private Date birthDay; public Student() { super(); } public Student(int id, String name, Date birthDay) { super(); this.id = id; this.name = name; this.birthDay = birthDay; } @Override public String toString() { return "Student [birthDay="+birthDay+",id="+id+",name="+name+"]"; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Date getBirthDay() { return birthDay; } public void setBirthDay(Date birthDay) { this.birthDay = birthDay; } }
2.测试类:
package com.wds.json; 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(); test1(gson); System.out.println(); test2(gson); } private static void test2(Gson gson) { Map<String,Point> map1 = new LinkedHashMap<String,Point>(); map1.put("a", new Point(5, 6)); map1.put("b",new Point(8, 8)); // map => json String s = gson.toJson(map1); System.out.println("map = > json:" + s); // json => map Map<String,Point> retMap = gson.fromJson(s, new TypeToken<Map<String,Point>>() { }.getType()); for (String key : retMap.keySet()) { System.out.println("p[key:" + key + ",value:" + retMap.get(key)+"]"); } System.out.println("map1:"+map1); System.out.println("map:"+retMap); } private static void test1(Gson gson) { // 使用LinkedHashMap将结果按先进先出顺序排列 Map<Point, String> map1 = new LinkedHashMap<Point, String>(); map1.put(new Point(5, 6), "a"); map1.put(new Point(8, 8), "b"); // map => json String s = gson.toJson(map1); System.out.println("map = > json:" + s); // json => map Map<Point, String> retMap = gson.fromJson(s, new TypeToken<Map<Point, String>>() { }.getType()); for (Point p : retMap.keySet()) { System.out.println("p[key:" + p + ",value:" + retMap.get(p)+"]"); } System.out.println("map1:"+map1); System.out.println("map:"+retMap); } }
3.运行结果:
map = > json:[[{"x":5,"y":6},"a"],[{"x":8,"y":8},"b"]] p[key:Point[x=5,y=6],value:a] p[key:Point[x=8,y=8],value:b] map1:{Point[x=5,y=6]=a, Point[x=8,y=8]=b} map:{Point[x=5,y=6]=a, Point[x=8,y=8]=b} map = > json:{"a":{"x":5,"y":6},"b":{"x":8,"y":8}} p[key:a,value:Point[x=5,y=6]] p[key:b,value:Point[x=8,y=8]] map1:{a=Point[x=5,y=6], b=Point[x=8,y=8]} map:{a=Point[x=5,y=6], b=Point[x=8,y=8]}
4.测试类:
package com.wds.json; import java.util.ArrayList; import java.util.Date; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class GsonTest4 { public static void main(String[] args) { Map<String, Object> map = new LinkedHashMap<String, Object>(); List<Point> points = new ArrayList<Point>(); points.add(new Point(3, 4)); points.add(new Point(5, 6)); points.add(new Point(9, 3)); List<Student> students = new ArrayList<Student>(); students.add(new Student(1, "songjiang", new Date())); students.add(new Student(2, "lujunyi", new Date())); students.add(new Student(3, "linchong", new Date())); map.put("points", points); map.put("students", students); Gson gson = new Gson(); String json = gson.toJson(map); System.out.println("map = > json:" + json+"\n"); Map<String, Object> retMap = gson.fromJson(json, new TypeToken<Map<String, List<Object>>>() { }.getType()); for (String key : retMap.keySet()) { System.out.println("key:" + key + " value:" + retMap.get(key)); if (key.equals("students")) { List<Student> stus = (List<Student>) retMap.get(key); System.out.println(stus+"\n"); } else if (key.equals("points")) { List<Point> pointss = (List<Point>) retMap.get(key); System.out.println(pointss+"\n"); } } } }
运行结果:
map = > json:{"points":[{"x":3,"y":4},{"x":5,"y":6},{"x":9,"y":3}],"students":[{"id":1,"name":"songjiang","bir":"Jun 19, 2013 10:22:20 PM"},{"id":2,"name":"lujunyi","bir":"Jun 19, 2013 10:22:20 PM"},{"id":3,"name":"linchong","bir":"Jun 19, 2013 10:22:20 PM"}]} key:points value:[{x=3.0, y=4.0}, {x=5.0, y=6.0}, {x=9.0, y=3.0}] [{x=3.0, y=4.0}, {x=5.0, y=6.0}, {x=9.0, y=3.0}] key:students value:[{id=1.0, name=songjiang, bir=Jun 19, 2013 10:22:20 PM}, {id=2.0, name=lujunyi, bir=Jun 19, 2013 10:22:20 PM}, {id=3.0, name=linchong, bir=Jun 19, 2013 10:22:20 PM}] [{id=1.0, name=songjiang, bir=Jun 19, 2013 10:22:20 PM}, {id=2.0, name=lujunyi, bir=Jun 19, 2013 10:22:20 PM}, {id=3.0, name=linchong, bir=Jun 19, 2013 10:22:20 PM}]
相关推荐
Gson作为Java对象和JSON转换的利器,通过其强大的功能和简洁的API,简化了开发者在JSON数据处理中的工作。无论是基本类型还是复杂对象,Gson都能轻松应对,同时提供了自定义转换的灵活性,使得在实际项目中更加...
Json转换利器Gson之实例三-Map处理(上) (http://blog.csdn.net/lk_blog/article/details/7685210) Json转换利器Gson之实例四-Map处理(下) (http://blog.csdn.net/lk_blog/article/details/7685224) Json转换利器Gson...
Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Simple JSON,其版本2.3.1是一个较为稳定且广泛使用的版本,适用于许多Android和Java项目。本篇文章将深入探讨Gson ...
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 java对象或者list转换为json字符串
总结来说,Gson-jar资源是Java开发中处理JSON的利器,提供了方便、高效的序列化和反序列化功能,对于任何需要与JSON格式数据打交道的Java项目来说,都是不可或缺的工具。使用Gson,你可以轻松地在Java对象和JSON之间...
在描述中提到,Gson库是处理JSON的利器,它可以将JSON字符串转化为Java对象。这是一个关键特性,因为JSON作为轻量级的数据交换格式,广泛用于Web服务和移动应用中。Gson通过反射机制,可以自动将JSON字符串映射到...
Gson是Google推出的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全名是Google Simple Data Binder,版本2.7是其稳定且广泛使用的版本。标题中的"gson2.7.jar"正是这个库的二进制文件,可以被Java...
文件包括(1.GSON的jar包。2.GSON的源码。3.Gson的HTML和CHM的API文档)。统一版本号2.2.4。 JavaScript在编程语言中一直很热门.JSON...GSON在以Java开发的C/S(包括B/S)中有很好的发挥,GSON是Google开发的。
总之,Gson-2.7.jar是Java开发中处理JSON数据的利器,其高效、灵活的特点使其在各种项目中都有广泛的应用。无论是新手还是经验丰富的开发者,都能从中受益,轻松地在Java对象和JSON数据之间穿梭。
在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与客户端之间的...无论是在Web服务开发、Android应用还是其他Java相关项目中,Gson都是处理JSON数据不可或缺的利器。
这通常通过JSON库来实现,如Jackson、Gson或Fastjson等。这些库提供了API,可以将JSON字符串转化为JSON对象或者JSON数组。 2. **映射属性**:解析后的JSON对象会被映射到JavaBean的属性上。这个过程需要考虑到JSON...
总之,`com.alibaba.fastjson`是一个功能强大、性能优异的JSON处理工具包,对于Java开发者来说,它是一个不可或缺的开发利器。在处理JSON数据时,`fastjson`的高效、易用和全面性使得它成为首选的JSON解析库。通过...
《深入理解阿里巴巴FastJson:高效JSON...总结,阿里巴巴的FastJson凭借其出色的性能和易用性,已经成为Java开发者处理JSON数据的首选工具之一。了解并熟练掌握FastJson的使用,能够提升开发效率,优化应用程序的性能。
**Gson** 是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。它能够轻松地将JSON字符串转换为Java对象,反之亦然。Gson的强大之处在于其灵活性和深度,它可以处理复杂的数据结构,如嵌套对象和数组...
在Java开发中,处理JSON数据通常需要借助JSON解析库,如Gson、Jackson、org.json等。本文档介绍的“json格式数据解析工具类”正是为了简化这一过程而设计的,通过这个工具类,开发者可以直接传入JSON字符串,调用...
JSON(JavaScript Object Notation)...总之,"Json jar包"是Java开发中处理JSON数据的利器,它的存在简化了数据交换的流程,提高了开发效率。合理利用这个库,可以更好地实现Java应用与服务器或客户端之间的数据交互。
此外,随着Java生态的发展,出现了许多其他JSON库,如Jackson、Gson、Fastjson等,它们提供了更丰富的功能和更高的性能。这些库可能更适合大型项目或者有特定需求的开发环境。因此,在选择JSON处理库时,应根据项目...
- 第三方库:Java标准库并未内置JSON解析功能,但有多种第三方库提供了方便的JSON操作,比如Gson、fastjson和Jackson。这些库需要通过Maven或Gradle等构建工具引入相应的依赖jar包。 - Gson库:Google开发的Gson库...
总的来说,GsonFormat插件是提升Java开发者处理JSON数据效率的利器,通过简化JSON到JavaBean的转换过程,使得开发工作更加高效便捷。对于经常需要处理JSON数据的Java开发者而言,这是一个非常实用的工具。在实际应用...
它能够解析JSON文本,并自动生成与之对应的实体类代码,避免了手动创建和维护这些类的繁琐工作。 这个工具可能具备以下特点: 1. **易用性**:工具简单好用,说明用户界面直观,操作流程简洁,无需复杂设置即可快速...