Page:
Json
Pages
ActiveMQ
Ajax
AssertJ
BDD
Base Utils
BluePrintCSS(Deprecated)
CXF
Caching
Change4
ChangeLog
CreateNewProject
Crypto
Database
Datasource
DateTime
Design
Dozer
Eclipse
Ehcache
Email
Executable War
Graphite Windows
Graphite
Guava Cache
H2 Database
Hibernate Validator
High Performance Utils
Home
Home4.0
HttpClient
Hystrix
JMeter
JPA
JQuery Validation Plugin
JQuery
JSP
Jaxb
Jersey(Deprecated)
Jetty
Jmx
Json
Log
Logstash
Maven
Memcached
Metrics library
Mock
Monitoring and Metrics
MyBatis
Nodejs
Non Function
Performace test
Profiler
QuickStart
Rate Limiter
Redis
Reflection
ReleaseProcess(Internal)
Schedule
Selenium2
Serialize
Shiro Security
Simulator
SiteMesh
Sonar
Spring Data JPA
Spring MVC
Spring Restful Service
Spring
SpringSide Utils Overview
System Protection
Test Overview
Text
Transaction
Travis CI
Tutorial
Twitter Bootstrap
Unit Test
Validation
YUI Compressor
git
Clone
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
##JsonMapper in SpringSide-Core JsonMapper是对Jackson的Object Mapper的简单封装,提供如下函数:
- static JsonMapper buildNonNullMapper()及其他,提供构造NON_NULL,NON_EMPTY,NON_DEFAULT值Mapper的工厂方法,详见后面的例子。
- String toJson(Object object), 将Object,Collection,数组序列化成JSON字符串。Jackson的原生API还可以序列化到byte[]或File/Outputstream/Writer,可视情况使用.
- T fromJson(String jsonString, Class<T> clazz),从JSON字符串反序列到Object,这里仅支持POJO或简单Collection如List<String>.
- T fromJson(String jsonString, JavaType javaType),从JSON字符串反序列化复杂Collection如List<MyBean>.
- JavaType constructCollectionType(Class<?\ extends Collection> collectionClass, Class<?>... elementClasses), 和 类似的contructMapType(),构造上面函数需要的泛型的Collection Type,如HashMap<String,MyBean>, 则调用(HashMap.class,String.class, MyBean.class)
- T update(String jsonString, T object),当JSON里只含有Bean的部分属性時,更新一個已存在Bean,只覆盖该部分的属性.
- String toJsonP(String functionName, Object object) 输出Mashup用的JSONP格式数据.
- enableEnumUseToString(), 設定是否使用Enum的toString函数来读取Enum,详见后面的例子。
##JsonDemo in Showcase 一些值得特别留意的测试:
基本操作测试
- threeTypeInclusion(), Jackson有三种不同的输出风格,默认是全部输出,NON_NULL/NON_EMPTY是空值不输出,NON_DEFAULT是未变化过的值不输出。对外接口建议用NON_NULL/NON_EMPTY,内部接口则建议用NON_DEFAULT,因为这样最节约存储资源.
- jaxbStyleAnnotation(), 类似Jaxb的常用annotaion,如properName,ignore,propertyOrder.
- updateBean(),更新一個已存在Bean,JSON字符串裡只含有Bean的部分屬性,只覆蓋这部分的屬性.
特殊数据类型测试
- enumType(), 持久化枚举值.toJson默認使用enum.name(),fromJson默认使用或enum.name()或enum.order()。也可以设置全部使用enum.toString()。 建议toString()输出一个1,2,3之类的index值,比enum.name()节约空间,比enum.order()则取值比较固定。
- dateType(), 默认以timestamp的数值存储,在2.0后也可以用annotation在property上注释格式,而不是大锅饭的统一设置。
特殊功能测试
-
cycleReferenceBean(), 双向循环依赖Bean,Jackson的皇牌功能,GSon之类是做不到的,通过在双向属性上的注释,在序列化到JSON时会忽略掉循环依赖的属性,而在反序列化为Java对象时,又会很神奇的重新设置进去。
-
extensibleBean(), 可扩展Bean的设计会混合一些的固定属性和用一个Map<String,object>存放的扩展属性。通常,那些是固定属性,哪些是可扩展属性是在应用不断演进中是不断变化的。Jackson支持将所有属性都序列化成平行的属性列表,没有固定属性与Map中属性的区别,然后智能的将不在固定列的属性都丢到被@JsonAnyGetter/Setter注释的Map里面去。
-
multiViewBean(), 同一种POJO,在不同场景下可能需要序列化不同的属性组,Jackson支持使用View来定义.
###自定制行为
- customConverter(), 测试自定义转换器,整体感觉稍显复杂。这里是将Money和Long互转.
- customPropertyNaming(), 测试修改属性名策略, 这里简单的演示把属性名全小写。
##Jackson 2.0 Jackson 2.0, 连Package名都从org.codehaus改到com.fasterxml了, 所有代码都要相应修改。