json在springMVC中的使用

json(javascript Object Notation)是一种轻量级的数据交换格式。它是一种基于EMCAScript规范的子集。

格式

其对象表示为键值对。
数据由逗号分隔。
花括号表示对象。
方括号表示数组。
JSON 键值对是用来保存 JS 对象的一种方式,和 JS 对象的写法也大同小异,键/值对组合中的键名写在前面并用双引号 "" 包裹,使用冒号 : 分隔,然后紧接着值:
1
{"firstName": "John"}
这很容易理解,等价于这条 JavaScript 语句:
1
{firstName: "John"}
用json来表示对象数组,示例:
  1. [  
  2. {  
  3. "from":"小王",  
  4. "to":"周",  
  5. "content":"好好工作!",  
  6. "type":1  
  7. },  
  8. {  
  9. "from":"周",  
  10. "to":"小王",  
  11. "content":"我会加油的,争取早日回到中南海",  
  12. "type":2  
  13. }  
  14. ]  
在springMVC中,json是一种数据的呈现方式,使用ViewResolver的方式,就可以处理不同的数据呈现格式。ContentNegotiatingViewResolver
以下是ContentNegotiatingViewResolver在spring中的配置
<!-- 一个xml中可以配置多个ViewResolver,使用order属性排序。InternalSourceViewResolver放在最后-->

    
    
  1. <bean  
  2.     class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">  
  3.     <!-- 设置为true以忽略对Accept Header的支持-->  
  4.     <property name="ignoreAcceptHeader" value="true" />  
  5.     <!-- true,开启扩展名支持,false关闭支持 -->  
  6.     <property name="favorPathExtension" value="false" />  
  7.     <!-- 用于开启 /userinfo/123?format=json的支持 -->  
  8.     <property name="favorParameter" value="true" />  
  9. <property name="order" value="1"/>
  10.     <!-- 
  11.         在没有扩展名和参数时即: "/user/1" 时的默认展现形式 
  12.     -->  
  13.     <property name="defaultContentType" value="text/html" />  
  14.   
  15.     <!--  
  16.         参数值至mimeType的映射,即 /rest?format=json json是key,application/json就是value  
  17.         暂时只支持json和xml  
  18.     -->  
  19.     <property name="mediaTypes">  
  20.         <map>  
  21.             <entry key="json" value="application/json" />  
  22.             <entry key="xml" value="application/xml" />  
  23.         </map>  
  24.     </property>  
  25.   
  26.     <property name="viewResolvers">  
  27.         <!-- 关闭所有的解析器,防止它在查找候选视图时多个解析器都运行 -->  
  28.         <list></list>  
  29.     </property>  
  30.   
  31.     <property name="defaultViews">  
  32.         <list>  
  33.             <!-- for application/json -->  
  34.             <bean  
  35.                 class="org.springframework.web.servlet.view.json.MappingJacksonJsonView">  
  36.                 <!--                 <property name="renderedAttributes">-->  
  37.                 <!--                     <set>-->  
  38.                 <!--                         <value>result</value>-->  
  39.                 <!--                         <value>user</value>-->  
  40.                 <!--                         <value>page</value>-->  
  41.                 <!--                     </set>-->  
  42.                 <!--                 </property>-->  
  43.                 <!-- 重新设置 objectMapper-->  
  44.                 <property name="objectMapper">  
  45.                     <bean class="org.codehaus.jackson.map.ObjectMapper">  
  46.                         <!-- 
  47.                             设置objectMapper的serializationConfig的serializationInclusion属性,以忽略null对象 
  48.                         -->  
  49.                         <property name="serializationConfig.serializationInclusion">  
  50.                             <value  
  51.                                 type="org.codehaus.jackson.map.annotate.JsonSerialize.Inclusion">NON_NULL</value>  
  52.                         </property>  
  53.                     </bean>  
  54.                 </property>  
  55.             </bean>  
  56.             <!-- for application/xml -->  
  57.             <bean class="org.springframework.web.servlet.view.xml.MarshallingView">  
  58.                 <property name="marshaller">  
  59.                     <bean class="org.springframework.oxm.castor.CastorMarshaller">  
  60.                         <property name="validating" value="false"></property>  
  61.                     </bean>  
  62.                 </property>  
  63.             </bean>  
  64.         </list>  
  65.     </property>  
  66. </bean>  




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值