JSON格式化,详细介绍!

对于date类型的转化一直是json中比较复杂的事情,我这只提出一种自己会的方式与大家分享,如果还好更好的方式别忘记告诉我学习下嘿嘿在这先谢了

对于date类型直接转化如下

Java代码

  1. java.util.Date testDate = new Date();
  2. JSONObject jsonFromDate = JSONObject.fromObject(testDate);
  3. System.out.println(jsonFromDate);
  4. //prints {"date":26,"day":1,"hours":11,"minutes":30,"month":9,"seconds":18,"time":1256527818296,"timezoneOffset":-480,"year":109}
		java.util.Date testDate = new Date();
		JSONObject jsonFromDate = JSONObject.fromObject(testDate);
		System.out.println(jsonFromDate);
		//prints {"date":26,"day":1,"hours":11,"minutes":30,"month":9,"seconds":18,"time":1256527818296,"timezoneOffset":-480,"year":109}

上述转化后的格式明显不利于我们使用,下面介绍我的方法

Java代码

  1. //注册date类型的转化方式
  2. JsonConfig jsonConfig = new JsonConfig();
  3. jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImplTest());
  4. JSONObject jsonFromBean = JSONObject.fromObject(testBean,jsonConfig);
  5. System.out.println(jsonFromBean);
  6. //prints {"birthday":"2009-10-26","id":"id","name":"name"}
  7. String[] dateFormats = new String[] {"yyyy/MM/dd","yyyy-MM-dd"};
  8. JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
  9. TestBean jsonToBean = (TestBean)JSONObject.toBean(jsonFromBean,TestBean.class);
  10. System.out.println(jsonToBean);
  11. //prints [email protected][id=id,name=name,birthday=Mon Oct 26 00:00:00 CST 2009]
		//注册date类型的转化方式
		 JsonConfig jsonConfig = new JsonConfig();
		 jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImplTest());

		JSONObject jsonFromBean = JSONObject.fromObject(testBean,jsonConfig);
		System.out.println(jsonFromBean);

		//prints {"birthday":"2009-10-26","id":"id","name":"name"}

		String[] dateFormats = new String[] {"yyyy/MM/dd","yyyy-MM-dd"};
		JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
		TestBean jsonToBean = (TestBean)JSONObject.toBean(jsonFromBean,TestBean.class);
		System.out.println(jsonToBean);
		//prints [email protected][id=id,name=name,birthday=Mon Oct 26 00:00:00 CST 2009]

其中需要的类如下:

1.准备测试数据

Java代码

  1. import java.util.Date;
  2. import org.apache.commons.lang.builder.ReflectionToStringBuilder;
  3. public class TestBean {
  4. private String id;
  5. private String name;
  6. private java.util.Date birthday;
  7. public TestBean() {
  8. super();
  9. }
  10. public TestBean(String id, String name, Date birthday) {
  11. super();
  12. this.id = id;
  13. this.name = name;
  14. this.birthday = birthday;
  15. }
  16. public String getId() {
  17. return id;
  18. }
  19. public void setId(String id) {
  20. this.id = id;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. public java.util.Date getBirthday() {
  29. return birthday;
  30. }
  31. public void setBirthday(java.util.Date birthday) {
  32. this.birthday = birthday;
  33. }
  34. public String toString() {
  35. return ReflectionToStringBuilder.toString(this);
  36. }
  37. }
import java.util.Date;

import org.apache.commons.lang.builder.ReflectionToStringBuilder;

public class TestBean {

	private String id;
	private String name;
	private java.util.Date birthday;

	public TestBean() {
		super();
	}

	public TestBean(String id, String name, Date birthday) {
		super();
		this.id = id;
		this.name = name;
		this.birthday = birthday;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public java.util.Date getBirthday() {
		return birthday;
	}

	public void setBirthday(java.util.Date birthday) {
		this.birthday = birthday;
	}

	public String toString() {
		return ReflectionToStringBuilder.toString(this);
	}

}

2.创建date格式化类

Java代码

  1. import java.text.SimpleDateFormat;
  2. import java.util.Date;
  3. import net.sf.json.JsonConfig;
  4. import net.sf.json.processors.JsonValueProcessor;
  5. public class JsonValueProcessorImplTest implements JsonValueProcessor {
  6. private String format = "yyyy-MM-dd";
  7. public JsonValueProcessorImplTest() {
  8. super();
  9. }
  10. public JsonValueProcessorImplTest(String format) {
  11. super();
  12. this.format = format;
  13. }
  14. @Override
  15. public Object processArrayValue(Object value, JsonConfig jsonConfig) {
  16. String[] obj = {};
  17. if (value instanceof Date[]) {
  18. SimpleDateFormat sf = new SimpleDateFormat(format);
  19. Date[] dates = (Date[]) value;
  20. obj = new String[dates.length];
  21. for (int i = 0; i < dates.length; i++) {
  22. obj[i] = sf.format(dates[i]);
  23. }
  24. }
  25. return obj;
  26. }
  27. @Override
  28. public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
  29. if (value instanceof java.util.Date) {
  30. String str = new SimpleDateFormat(format).format((Date) value);
  31. return str;
  32. }
  33. return value.toString();
  34. }
  35. public String getFormat() {
  36. return format;
  37. }
  38. public void setFormat(String format) {
  39. this.format = format;
  40. }
  41. }
时间: 2024-08-08 22:54:11

JSON格式化,详细介绍!的相关文章

js中的json对象详细介绍

JSON一种简单的数据格式,比xml更轻巧,在JavaScript中处理JSON数据不需要任何特殊的API或工具包,下面为大家详细介绍下js中的json对象, 1.JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧.JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包. JSON的规则很简单:对象是一个无序的“‘名称:值'对”集合.一个对象以“{”(左括号)开始,“}”(右括号)结束

JSON的详细介绍

JSON的语法可以表示以下三种类型的值: 简单值:可以表示字符串,数值,布尔值,null,但不支持undefined. 对象(Object):对象作为一种复杂数据类型,表示的是一组无序的键值对儿. 数组(String):表示一组有序的值的列表 JSON不支持变量,函数或对象实例,他就是一种表示结构化数据的格式. JSON解析与序列化: JSON.parse()方法:把JSON字符串解析为原生javascript值. JSON.stringify()方法:把一个javascript对象序列化为一个

android json解析详细介绍之gson

废话不多说,什么json是轻量级数据交换标准:自己百度去深入了解:这里有三种json解析工具.本人只用过其中两种:    1.Google Json利器之Gson   评价:简单,方便. 2.阿里巴巴 Json利器之FastJson 评价:大数据的性能还是蛮快的. 3.IBM Json利器之Json4J   少人用. 首先导入volley.jar和gson.jar的包: 在主配置文件里面加上internet权限‘ 然后就是代码: mainActivity.java public class Ma

JSON、JSONObject 与 JSONArray 详细介绍及其应用方式

fastjson简介 fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean.比较牛的是下面这句话?? fastjson 相对其他 JSON 库的特点是快,从 2011 年 fastjson 发布1.1.x版本之后,其性能从未被其他 Java 实现的 JSON 库超越 附上其 maven 库坐标 <dependency> <groupId>c

struts详细介绍

Struts2 1. 目录 1.目录 2.MVC 3.STRUTS2解析 4.标签 5.OGNL 6.国际化 7.类型转换 8.校验 9. 拦截器 10.上传与下载 11.STRUTS2与对JSON的支持 2. MVC 把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller).MVC模式最早由Trygve Reenskaug在1978年提出,在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式.MVC模式的目的是实现一种动态的程式设计,使后

sprintf()详细介绍

sprintf 编辑词条 编辑词条 --> 字串格式化命令,主要功能是把格式化的数据写入某个字符串中.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf 误用导致的问题虽然严重,却很容易找出,无非就是那么几种情况,通常用眼睛再把出错的代码多看几眼就看出来了.[1]由于sprintf 跟printf 在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出.这也导致sprintf 比printf

linux awk 内置函数详细介绍(实例)

这节详细介绍awk内置函数,主要分以下3种类似:算数函数.字符串函数.其它一般函数.时间函数 一.算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x 的反正切. cos( x ) 返回 x 的余弦:x 是弧度. sin( x ) 返回 x 的正弦:x 是弧度. exp( x ) 返回 x 幂函数. log( x ) 返回 x 的自然对数. sqrt( x ) 返回 x 平方根. int( x ) 返回 x 的截断至整数的

Ubuntu根目录下各文件夹的功能详细介绍

Ubuntu的根目录下存在着很多的文件夹,但你知道他们都存放着哪些文件呢?这些是深入了解Ubuntu系统必不缺少的知识,本文就关于此做一下介绍吧. /bin/    用以存储二进制可执行命令文件. /sbin/    许多系统命令的存储位置,/usr/sbin/中也包括了许多命令. /root/    超级用户,即根用户的主目录. /home/    普通用户的默认目录,在该目录下,每个用户拥有一个以用户名命名的文件夹. /boot/    存放Ubuntu内核和系统启动文件. /boot/gr

Hibernate核心类和接口详细介绍

一.hiobernate核心类和接口预览图 二.hibernate.properties 这个文件是以前老版本使用的 类似于hibernate.cfg.xml文件:作用和hibernate.cfg.xml一致. 三.hibernate.cfg.xml (1)详细介绍 ①该文件主要用于指定各个参数,是hibernate核心文件 ②默认放在src目录下,也可以放在别的目录下. ③指定连接数据库的驱动.用户名.密码.url.连接池.. ④指定对象关系映射文件的位置. ⑤也可使用hibernate.pr