当前位置: 首页 > 实用文档 > 评课 > json转化器

json转化器

2016-10-02 12:04:04 成考报名 来源:http://www.chinazhaokao.com 浏览:

导读: json转化器(共3篇)Html与Json相互转换的方法jquery简单实现html与JSon的互换1 > jquery任意版本2>实现步骤(js代码)3>html代码Json和Java相互转化对于日期的操作完美解决json-lib的JSONObject toBean( )时碰到的日期属性转换的问题 json----...

以下是中国招生考试网www.chinazhaokao.com为大家整理的《json转化器》,希望大家能够喜欢!更多资源请搜索成考报名频道与你分享!

Html与Json相互转换的方法
json转化器 第一篇

jquery简单实现html与JSon的互换

1 > jquery任意版本

2>实现步骤(js代码)

3>html代码

Json和Java相互转化对于日期的操作完美解决
json转化器 第二篇

json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题 json------->Java

JSON数据是这样的:

{"birthday":"1980/01/01","name":"testname"}

操作代码:

json-lib的JSONObject.fromObject 转换JSON字符串碰到的日期属性转换的问题。

java------->Json 把一个javabean转换成一个JSON的字符串的时候遇到一个问题,因为javabean中含有Date日期的类型,格式化字符串的时候遇到把Date类型也作为一个对象了,而我想要的结果是key=value ,取出来则是 updatetime={day=24,year=2012...} 样子的。 我们可以看出

JSONObject net.sf.json.JSONObject.fromObject(Object object, JsonConfig jsonConfig)还接受一个JsonConfig对象,那么我们就应该从这里入手。

首先写一个value处理器:

public class DateJsonValueProcessor implements JsonValueProcessor{

/**

* 字母 日期或时间元素 表示 示例 <br>

* G Era 标志符 Text AD <br>

* y 年 Year 1996; 96 <br>

* M 年中的月份 Month July; Jul; 07 <br>

* w 年中的周数 Number 27 <br>

* W 月份中的周数 Number 2 <br>

* D 年中的天数 Number 189 <br>

* d 月份中的天数 Number 10 <br>

* F 月份中的星期 Number 2 <br>

* E 星期中的天数 Text Tuesday; Tue<br>

* a Am/pm 标记 Text PM <br>

* H 一天中的小时数(0-23) Number 0 <br>

* k 一天中的小时数(1-24) Number 24<br>

* K am/pm 中的小时数(0-11) Number 0 <br>

* h am/pm 中的小时数(1-12) Number 12 <br>

* m 小时中的分钟数 Number 30 <br>

* s 分钟中的秒数 Number 55 <br>

* S 毫秒数 Number 978 <br>

* z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 <br>

* Z 时区 RFC 822 time zone -0800 <br>

*/

public static final String Default_DATE_PATTERN = "yyyy-MM-dd";

private DateFormat dateFormat;

public DateJsonValueProcessor(String datePattern) {

try {

dateFormat = new SimpleDateFormat(datePattern);

} catch (Exception e) {

dateFormat = new SimpleDateFormat(Default_DATE_PATTERN);

}

}【json转化器】

@Override

public Object processArrayValue(Object value, JsonConfig jsonConfig) {

return process(value);

}

@Override

public Object processObjectValue(String key, Object value,JsonConfig jsonConfig) { return process(value);

}

private Object process(Object value) {

if (value == null) {

return "";

} else {

return dateFormat.format((Timestamp) value);

}

}

}

操作代码: 1. JsonConfig config = new JsonConfig();

2. config.registerJsonValueProcessor(Timestamp.class,new DateJsonValueProces

sor("yyyy-MM-dd HH:mm:ss"));

3. JSONObject.fromObject(Object bean, JsonConfig jsonConfig)

SpringMVC关于json、xml自动转换的原理研究
json转化器 第三篇

SpringMVC关于json、xml自动转换的原理研究

<mvc:resources location="/static/"

mapping="/static/**"/><mvc:annotation-driven/><context:component-scan

base-package="org.format.demo.controller" />视图配置省略.....

pom中需要有以下依赖(Spring依赖及其他依赖不显示):

<dependency> <groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-core-asl</artifactId> <version>1.9.13</version> </dependency> <dependency> <groupId>org.codehaus.jackson</groupId>

<artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency>

【json转化器】

这个依赖分别是json序列化的依赖。

ok。我们在Controller中添加一个method:

@RequestMapping("/)

@ResponseBody

public Map<String, Object> <String, Object> map = new HashMap<String, Object>(); map.put("list", employeeService.list());【json转化器】

return map;}

直接访问地址:

我们看到,短短几行配置。使用@ResponseBody注解之后,Controller返回的对象 自动被转换成对应的json数据,在这里不得不感叹SpringMVC的强大。

我们好像也没看到具体的配置,唯一看到的就是*-dispatcher.

那么spring到底是如何实现java对象到json对象的自动转换的呢? 为什么转换成了json数据,如果想转换成

源码分析

本文使用的spring版本是4.0.2。

在讲解<mvc:annotation-driven/>这个配置之前,我们先了解下Spring的消息转换机制。

@ResponseBody这个注解就是使用消息转换机制,最终通过json的转换器转换成json数据的。

HttpMessageConverter接口就是Spring提供的http消息转换接口。有关这方面的知识大家可以参考"参考资料"中的第二条链接,里面讲的很清楚。

下面开始分析<mvc:annotation-driven/>这句配置:【json转化器】

这句代码在spring中的解析类是:

在AnnotationDrivenBeanDefinitionParser源码的152行parse方法中:

分别实例化了RequestMappingHandlerMapping,ConfigurableWebBindingInitializer,

RequestMappingHandlerAdapter等诸多类。

【json转化器】

其中RequestMappingHandlerMapping

和RequestMappingHandlerAdapter这两个类比较重要。

RequestMappingHandlerMapping处理请求映射的,处理@RequestMapping跟请求地址之间的关系。 RequestMappingHandlerAdapter是请求处理的适配器,也就是请求之后处理具体逻辑的执行,关系到哪个类的哪个方法以及转换器等工作,这个类是我们讲的重点,其中它的属性messageConverters是本文要讲的重点。

私有方法:getMessageConverters

从代码中我们可以,RequestMappingHandlerAdapter设置messageConverters的逻辑:

1.如果<mvc:annotation-driven>节点有子节点message-converters,那么它的转换器属性

messageConverters也由这些子节点组成。

message-converters的子节点配置如下:

<mvc:annotation-driven> <mvc:message-converters register-defaults="true"> <bean class="org.example.MyHttpMessageConverter"/> <bean

class="org.example.MyOtherHttpMessageConverter"/> </mvc:message-converters></mvc:annotation-driven>

2.message-converters子节点不存在或它的属性register-defaults为true的话,加入其他的转换器:ByteArrayHttpMessageConverter、StringHttpMessageConverter、ResourceHttpMessageConverter等。

我们看到这么一段:

这些boolean属性是哪里来的呢,它们是AnnotationDrivenBeanDefinitionParser的静态变量。

其中ClassUtils中的isPresent方法如下:

看到这里,读者应该明白了为什么本文一开始在pom文件中需要加入对应的jackson依赖,为了让json转换器jackson成为默认转换器之一。

<mvc:annotation-driven>的作用读者也明白了。

下面我们看如何通过消息转换器将java对象进行转换的。

RequestMappingHandlerAdapter在进行handle的时候,会委托给HandlerMethod(具体由子类ServletInvocableHandlerMethod处理)的invokeAndHandle方法进行处理,这个方法又转接给HandlerMethodReturnValueHandlerComposite处理。

HandlerMethodReturnValueHandlerComposite维护了一个HandlerMethodReturnValueHandler列表。HandlerMethodReturnValueHandler是一个对返回值进行处理的策略接口。然后找到确定的HandlerMethodReturnValueHandler对结果值进行处理。

最终找到RequestResponseBodyMethodProcessor这个Handler(由于使用了@ResponseBody注解)。

以上就是中国招生考试网http://www.chinazhaokao.com/带给大家的精彩成考报名资源。想要了解更多《json转化器》的朋友可以持续关注中国招生考试网,我们将会为你奉上最全最新鲜的成考报名内容哦! 中国招生考试网,因你而精彩。

相关热词搜索:json时间转换器 json教程

最新推荐成考报名

更多
1、“json转化器”由中国招生考试网网友提供,版权所有,转载请注明出处。
2、欢迎参与中国招生考试网投稿,获积分奖励,兑换精美礼品。
3、"json转化器" 地址:http://www.chinazhaokao.com/pingke/669486.html,复制分享给你身边的朋友!
4、文章来源互联网,如有侵权,请及时联系我们,我们将在24小时内处理!