MappingJacksonJsonView gibt ein Json-Objekt der obersten Ebene zurück
Ich habe auf Controller umgestellt, um ContentNegotiatingViewResolver anstelle von MessageConverters zur Unterstützung mehrerer Ausgabetypen zu verwenden. Mit json benutze ich MappingJacksonJsonView:
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="order" value="1" />
<property name="mediaTypes">
<map>
<entry key="html" value="text/html"/>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller" />
</constructor-arg>
</bean>
</list>
</property>
<property name="ignoreAcceptHeader" value="true" />
<property name="defaultContentType" value="application/json" />
</bean>
Mit folgender Steuerungslogik:
@RequestMapping(value = "/id/{id}", method = RequestMethod.GET)
public ModelAndView getById(@PathVariable (value="id") String id) {
MyObject ret = doGetById(id);
ModelAndView modelAndView = new ModelAndView("common/single");
modelAndView.addObject("myObject", ret);
return modelAndView;
}
Die json-Rückgabe, wenn ich auf /id/1234.json zugreife, sieht ungefähr so aus:
{
myObject: {
field1:"abc",
field2:"efg"
}
}
Gibt es eine Möglichkeit, myObject als obersten Knoten für das Ergebnis festzulegen, sodass es stattdessen so aussieht:
{
field1:"abc",
field2:"efg"
}