`

java利器F Json之Gson(三)

    博客分类:
  • java
 
阅读更多

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}]

 

分享到:
评论

相关推荐

    Java对象和JSON互转换利器-Gson

    Gson作为Java对象和JSON转换的利器,通过其强大的功能和简洁的API,简化了开发者在JSON数据处理中的工作。无论是基本类型还是复杂对象,Gson都能轻松应对,同时提供了自定义转换的灵活性,使得在实际项目中更加...

    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 2.3.1 json转换利器

    Gson是Google开发的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全称是Google Simple JSON,其版本2.3.1是一个较为稳定且广泛使用的版本,适用于许多Android和Java项目。本篇文章将深入探讨Gson ...

    Json转换利器Gson实例代码,java对象或者list转换为json字符串

    Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。 java对象或者list转换为json字符串

    gson-jar的资源,处理json字符串请下载

    总结来说,Gson-jar资源是Java开发中处理JSON的利器,提供了方便、高效的序列化和反序列化功能,对于任何需要与JSON格式数据打交道的Java项目来说,都是不可或缺的工具。使用Gson,你可以轻松地在Java对象和JSON之间...

    gson-2.3.1.zip

    在描述中提到,Gson库是处理JSON的利器,它可以将JSON字符串转化为Java对象。这是一个关键特性,因为JSON作为轻量级的数据交换格式,广泛用于Web服务和移动应用中。Gson通过反射机制,可以自动将JSON字符串映射到...

    gson2.7.jar

    Gson是Google推出的一款强大的Java库,用于在Java对象和JSON数据之间进行映射。它的全名是Google Simple Data Binder,版本2.7是其稳定且广泛使用的版本。标题中的"gson2.7.jar"正是这个库的二进制文件,可以被Java...

    JavaScript利器GSON

    文件包括(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包

    总之,Gson-2.7.jar是Java开发中处理JSON数据的利器,其高效、灵活的特点使其在各种项目中都有广泛的应用。无论是新手还是经验丰富的开发者,都能从中受益,轻松地在Java对象和JSON数据之间穿梭。

    flash2316.rar

    在IT行业中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛应用于Web服务与客户端之间的...无论是在Web服务开发、Android应用还是其他Java相关项目中,Gson都是处理JSON数据不可或缺的利器。

    Json一键转Javabean工具

    这通常通过JSON库来实现,如Jackson、Gson或Fastjson等。这些库提供了API,可以将JSON字符串转化为JSON对象或者JSON数组。 2. **映射属性**:解析后的JSON对象会被映射到JavaBean的属性上。这个过程需要考虑到JSON...

    com.alibaba.fastjson json解析工具包

    总之,`com.alibaba.fastjson`是一个功能强大、性能优异的JSON处理工具包,对于Java开发者来说,它是一个不可或缺的开发利器。在处理JSON数据时,`fastjson`的高效、易用和全面性使得它成为首选的JSON解析库。通过...

    fast-json.zip

    《深入理解阿里巴巴FastJson:高效JSON...总结,阿里巴巴的FastJson凭借其出色的性能和易用性,已经成为Java开发者处理JSON数据的首选工具之一。了解并熟练掌握FastJson的使用,能够提升开发效率,优化应用程序的性能。

    Asy+httpcore+gson.zip

    **Gson** 是Google开发的一个Java库,用于在Java对象和JSON数据之间进行映射。它能够轻松地将JSON字符串转换为Java对象,反之亦然。Gson的强大之处在于其灵活性和深度,它可以处理复杂的数据结构,如嵌套对象和数组...

    json格式数据解析工具类

    在Java开发中,处理JSON数据通常需要借助JSON解析库,如Gson、Jackson、org.json等。本文档介绍的“json格式数据解析工具类”正是为了简化这一过程而设计的,通过这个工具类,开发者可以直接传入JSON字符串,调用...

    Json jar包

    JSON(JavaScript Object Notation)...总之,"Json jar包"是Java开发中处理JSON数据的利器,它的存在简化了数据交换的流程,提高了开发效率。合理利用这个库,可以更好地实现Java应用与服务器或客户端之间的数据交互。

    json.org.jar

    此外,随着Java生态的发展,出现了许多其他JSON库,如Jackson、Gson、Fastjson等,它们提供了更丰富的功能和更高的性能。这些库可能更适合大型项目或者有特定需求的开发环境。因此,在选择JSON处理库时,应根据项目...

    Java中的小知识—–JSON

    - 第三方库:Java标准库并未内置JSON解析功能,但有多种第三方库提供了方便的JSON操作,比如Gson、fastjson和Jackson。这些库需要通过Maven或Gradle等构建工具引入相应的依赖jar包。 - Gson库:Google开发的Gson库...

    GsonFormat.7z

    总的来说,GsonFormat插件是提升Java开发者处理JSON数据效率的利器,通过简化JSON到JavaBean的转换过程,使得开发工作更加高效便捷。对于经常需要处理JSON数据的Java开发者而言,这是一个非常实用的工具。在实际应用...

    Json生成实体类工具

    它能够解析JSON文本,并自动生成与之对应的实体类代码,避免了手动创建和维护这些类的繁琐工作。 这个工具可能具备以下特点: 1. **易用性**:工具简单好用,说明用户界面直观,操作流程简洁,无需复杂设置即可快速...

Global site tag (gtag.js) - Google Analytics