json(javascript Object Notation)是一种轻量级的数据交换格式。它是一种基于EMCAScript规范的子集。
格式
其对象表示为键值对。
数据由逗号分隔。
花括号表示对象。
方括号表示数组。
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 “” 包裹,使用冒号 : 分隔,然后紧接着值:
1
{“firstName”: “John”}
这很容易理解,等价于这条 JavaScript 语句:
1
{firstName: “John”}
用json来表示对象数组,示例:
[
{
“from”:”小王”,
“to”:”周”,
“content”:”好好工作!”,
“type”:1
},
{
“from”:”周”,
“to”:”小王”,
“content”:”我会加油的,争取早日回到中南海”,
“type”:2
}
]
在springMVC中,json是一种数据的呈现方式,使用ViewResolver的方式,就可以处理不同的数据呈现格式。ContentNegotiatingViewResolver
以下是ContentNegotiatingViewResolver在spring中的配置
<!-- 一个xml中可以配置多个ViewResolver,使用order属性排序。 InternalSourceViewResolver放在最后-->
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<!-- 设置为true以忽略对Accept Header的支持-->
<property name="ignoreAcceptHeader" value="true" />
<!-- true,开启扩展名支持,false关闭支持 -->
<property name="favorPathExtension" value="false" />
<!-- 用于开启 /userinfo/123?format=json的支持 -->
<property name="favorParameter" value="true" />
<property name="order" value="1"/>
<!--
在没有扩展名和参数时即: "/user/1" 时的默认展现形式
-->
<property name="defaultContentType" value="text/html" />
<!--
参数值至mimeType的映射,即 /rest?format=json json是key,application/json就是value
暂时只支持json和xml
-->
<property name="mediaTypes">
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="viewResolvers">
<!-- 关闭所有的解析器,防止它在查找候选视图时多个解析器都运行 -->
<list></list>
</property>
<property name="defaultViews">
<list>
<!-- for application/json -->
<bean
class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">
<!-- <property name="renderedAttributes">-->
<!-- <set>-->
<!-- <value>result</value>-->
<!-- <value>user</value>-->
<!-- <value>page</value>-->
<!-- </set>-->
<!-- </property>-->
<!-- 重新设置 objectMapper-->
<property name="objectMapper">
<bean class="org.codehaus.jackson.map.ObjectMapper">
<!--
设置objectMapper的serializationConfig的serializationInclusion属性,以忽略null对象
-->
<property name="serializationConfig.serializationInclusion">
<value
type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_NULL</value>
</property>
</bean>
</property>
</bean>
<!-- for application/xml -->
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<property name="marshaller">
<bean class="org.springframework.oxm.castor.CastorMarshaller">
<property name="validating" value="false"></property>
</bean>
</property>
</bean>
</list>
</property>