【问题标题】:Own specific name for attributes from JSON response来自 JSON 响应的属性的特定名称
【发布时间】:2013-02-15 00:25:57
【问题描述】:

我正在使用 Spring 和 Java 1.7 的 REST

我有以下模型类:

private String name;
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

我的控制器被映射到 GET /person/info API。因此,控制器获取名称并将其显示为 JSON 响应。

这里是控制器:

 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestHeader;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;

@RequestMapping(value = "persons/info", method = RequestMethod.POST, consumes="application/json", produces="application/json")
public ResponseEntity<String> getPersonInfo(@RequestBody String body) throws Exception {    
    String personInfo = null;

    MyServiceJson myServiceJson = MyServiceJsonFactory.getMyServiceObject(body);

    personInfo = myService.getPersonInfo(myServiceJson);

    HttpHeaders responseHeader = new HttpHeaders();
    return Util.getResponse(personInfo, responseHeader, HttpStatus.OK);
}

我收到如下所示的 JSON 响应:

{"name":"Jack"}

这里的问题是这个名字字符串必须是personName,如下图:

{"PersonName":"Jack"}

我相信它是从模型中获取变量名并按原样发送。谁能告诉我是否可以通过 REST 服务中的一些注释更改将不同的属性名称设置为“PersonName”??

如果有人能在这里阐明一下,我将不胜感激!

谢谢!

【问题讨论】:

    标签: java spring rest


    【解决方案1】:

    如果你使用的是 Jackson 库,我想你可以这样指定:

    @JsonProperty("PersonName")
    public String getName() {
        return name;
    }
    

    【讨论】:

    • 我需要在方法名或变量名上面添加这个注解吗?
    • 我以前在变量声明前加注解,但我觉得两者都行。
    • 不知何故它不适合我。我仍然只得到名字而不是人名??我还需要改变什么吗?我在响应中还有其他属性吗?我需要为每个标签添加此注释吗?
    • 您使用的是什么版本的 Spring/Jackson?我没有什么特别的事情要做,但是这个话题可以解释你的问题:stackoverflow.com/questions/10085088/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    相关资源
    最近更新 更多