如何用MappingJacksonHttpMessageConverter获得带有Pascal外壳的Json?

时间:2013-07-18 16:28:58

标签: json spring-mvc jackson

这是事情......我正在使用jtable(jquery)来显示一些用户数据。该组件需要一个带有两个字段的json:Result和Records。在我的控制器中,我有一个返回json的方法:

@RequestMapping(method=RequestMethod.POST, value="/getUsersInJson")
 public @ResponseBody String getUsersInJsonHandler(){
     ElementsInList<User> users = new ElementsInList<User>();
     users.setItems(userService.getUsers());
     return users;
 }

类ElementsInList包含两个字段:结果和记录。结果是获取成功消息的字符串,记录是参数化列表,在此情况下包含用户列表。我得到了这个JSON:

“{” 结果 “:” OK”, “记录”:[{ “用户名”: “John” 的

但我需要这个:

“{” 结果 “:” OK”, “记录”:[{ “用户名”: “约翰”,...

这是我的映射:

<!-- Json converter bean --> 
<bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
        <ref bean="jacksonMessageConverter"/>
        </list>
    </property>
</bean>

我该怎么办?我查了一些帖子但是有旧版本。 我正在使用Spring 3,Spring MVC和jQuery。

1 个答案:

答案 0 :(得分:0)

我通过使用JsonProperty注释解决了它。您可以给出jackson用于构建json字段的名称。这里有一个jtable(jquery)的例子:

public class ElementsInList<T> {
    @JsonProperty("Result")
    private String result = "OK";

    @JsonProperty("Records")
    private List<T> records;
    public String getResult() {
        return result;
    }
    public void setResult(String result) {
        this.result = result;
    }
    public List<T> getRecords() {
        return records;
    }
    public void setRecords(List<T> records) {
        this.records = records;
    }
}

结果json是这样的:{“结果”:“确定”,“记录”:[{“roleName”:“admin”...

但是有更多关于这个注释的内容。查看api以获取更多信息:http://fasterxml.github.io/jackson-annotations/javadoc/2.1.0/com/fasterxml/jackson/annotation/package-summary.html