Spring mvc 使用 jackson2 返回json格式資料時資料的構成
阿新 • • 發佈:2019-02-06
xml:
<bean id="viewResolver" class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"> <property name="contentNegotiationManager" ref="cnManager"/> <property name="viewResolvers"><!-- 針對freemarker的檢視配置 --> <list> <bean class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.freemarker.FreeMarkerView"/> <!-- <property name="viewNames" value=".ftl"/>--> <property name="contentType" value="text/html; charset=utf-8"/> <property name="cache" value="true" /> <property name="prefix" value="" /> <property name="suffix" value=".ftl" /> <property name="order" value="2"/> </bean> <!--<bean id="liteDeviceDelegatingViewResolver" class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">--> <!--<constructor-arg>--> <!--<bean--> <!--class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">--> <!--<property name="cache" value="true"/>--> <!--<property name="requestContextAttribute" value="rc"/>--> <!--<property name="prefix" value=""/>--> <!--<property name="suffix" value=".ftl"/>--> <!--<property name="exposeSpringMacroHelpers" value="true"/>--> <!--<property name="exposeRequestAttributes" value="true"/>--> <!--<property name="exposeSessionAttributes" value="true"/>--> <!--<property name="contentType" value="text/html;charset=UTF-8"/>--> <!--</bean>--> <!--</constructor-arg>--> <!--<property name="mobilePrefix" value="mobile/" />--> <!--<property name="tabletPrefix" value="tablet/" />--> <!--<property name="enableFallback" value="true" />--> <!--</bean>--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/view/jsp/"></property><!-- 配置頁面路徑 --> <property name="suffix" value=".jsp"></property><!-- 檔案以value值結尾 --> </bean> </list> </property> <property name="defaultViews"> <list> <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> <!-- <property name="extractValueFromSingleKeyModel" value="true"/> --> <property name="prettyPrint" value="true"/> <property name="contentType" value="text/plain"/> </bean> <bean class="org.springframework.web.servlet.view.xml.MarshallingView"> <constructor-arg ref="jaxb2Marshaller"> </constructor-arg> </bean> <bean class="com.wonders.stpt.bid.controller.JXLExcelView"/> </list> </property> </bean> <bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> <property name="classesToBeBound"> <list> <value>com.wonders.stpt.bid.domain.Route</value> <value>com.wonders.stpt.bid.domain.Dictionary</value> </list> </property> </bean>
方法1:
@RequestMapping(method = RequestMethod.GET, value = "/dictionaries") public void dictionaries( Model model, String id) throws Exception { Dictionary dictionary = new Dictionary(); dictionary.setParentNo(id); List<Dictionary> dictionaries = dictionaryService.getDictionaries(dictionary); List list = new ArrayList(); for (Dictionary dict : dictionaries) { Map map = new HashMap(); map.put("id", dict.getDictId()); map.put("name", dict.getDictName()); map.put("dictType", dict.getDictType()); map.put("dictNo", dict.getDictNo()); map.put("dictOrder", dict.getDictOrder()); if (dict.getParentNo() == null) map.put("isParent", true); else map.put("isParent", false); list.add(map); } model.addAttribute("root", list); model.addAttribute("maxNo", dictionaryService.getMaxDictNo()); }
json1:
{ "root" : [ { "id" : "7", "dictNo" : "7", "dictOrder" : 1, "name" : "行業", "isParent" : true, "dictType" : "trade" }, { "id" : "5", "dictNo" : "5", "dictOrder" : 2, "name" : "集團", "isParent" : true, "dictType" : "groups" }, { "id" : "6", "dictNo" : "6", "dictOrder" : 3, "name" : "線路", "isParent" : true, "dictType" : "routeType" } ], "currentUser" : { "userId" : "2", "loginName" : "G00100000123", "password" : null, "userName" : "李晴陽", "roles" : [ { "roleId" : null, "roleName" : "ROLE_EDITOR", "description" : null, "removed" : null, "createTime" : null, "creator" : null, "updateTime" : null, "updater" : null } ] }, "maxNo" : 20
方法2:
@RequestMapping(method = RequestMethod.GET, value = "/dictionaries")
public void dictionaries(Dictionary dictionary, Model model, String id) throws Exception {
dictionary.setParentNo(id);
List<Dictionary> dictionaries = dictionaryService.getDictionaries(dictionary);
List list = new ArrayList();
for (Dictionary dict : dictionaries) {
Map map = new HashMap();
map.put("id", dict.getDictId());
map.put("name", dict.getDictName());
map.put("dictType", dict.getDictType());
map.put("dictNo", dict.getDictNo());
map.put("dictOrder", dict.getDictOrder());
if (dict.getParentNo() == null)
map.put("isParent", true);
else
map.put("isParent", false);
list.add(map);
}
model.addAttribute("root", list);
model.addAttribute("maxNo", dictionaryService.getMaxDictNo());
}
json2:
{
"dictionary" : {
"dictId" : null,
"dictNo" : null,
"dictName" : null,
"dictType" : null,
"dictOrder" : null,
"parentNo" : null,
"createTime" : null,
"updateTime" : null,
"removed" : null,
"creator" : null,
"updater" : null
},
"root" : [ {
"id" : "7",
"dictNo" : "7",
"dictOrder" : 1,
"name" : "行業",
"isParent" : true,
"dictType" : "trade"
}, {
"id" : "5",
"dictNo" : "5",
"dictOrder" : 2,
"name" : "集團",
"isParent" : true,
"dictType" : "groups"
}, {
"id" : "6",
"dictNo" : "6",
"dictOrder" : 3,
"name" : "線路",
"isParent" : true,
"dictType" : "routeType"
} ],
"currentUser" : {
"userId" : "2",
"loginName" : "G00100000123",
"password" : null,
"userName" : "李晴陽",
"roles" : [ {
"roleId" : null,
"roleName" : "ROLE_EDITOR",
"description" : null,
"removed" : null,
"createTime" : null,
"creator" : null,
"updateTime" : null,
"updater" : null
} ]
},
"maxNo" : 20
}
可以看到,除了方法中的Model被轉換了,另一個引數 Dictionary也被轉換了。