是否可以以简单的方式配置,以便Jackson(在Spring Boot REST服务中使用)在序列化对象时使用 JsonProperty 属性?
Spring Boot REST客户端正在与Spring Boot REST服务进行通信。 REST服务使用字段名称生成JSON,但REST客户端在收到JSON时尝试使用@JsonProperty批注中指定的值对其进行解析。
我无法解释是什么原因导致它在序列化/反序列化过程中采取不同的方法,以及可以做些什么来让他们在同一个话题中说话。我希望这是一个可以在某处设置的简单配置。
客户收到的JSON
16:13:47.491 [main] INFO TokenServiceImpl - 收到的AccessToken:" 令牌":" 2YotnFZFEjr1zCsicMWpAA"," expiresIn&#34 ;:3600," refreshToken":"是"" tokenType":"例如"}
抛出异常
Caused by: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "token" (C lass org.jboss.resteasy.skeleton.key.representations.AccessTokenResponse), not marked as ignorable at [Source: java.io.ByteArrayInputStream@2e9820ae; line: 1, column: 11] (through reference chain: o rg.jboss.resteasy.skeleton.key.representations.AccessTokenResponse["token"])
at org.codehaus.jackson.map.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyExcep tion.java:53)
REST服务器代码
import org.jboss.resteasy.skeleton.key.representations.AccessTokenResponse;
@RequestMapping(value = "/token", method = RequestMethod.POST)
public @ResponseBody AccessTokenResponse getToken(@RequestBody String requestBody)
{
System.out.println("Request Body received:\n" + requestBody);
AccessTokenResponse response = new AccessTokenResponse();
response.setToken("2YotnFZFEjr1zCsicMWpAA");
response.setTokenType("example");
response.setExpiresIn(3600L);
response.setRefreshToken("YES");
return response;
}
被序列化的类
package org.jboss.resteasy.skeleton.key.representations;
public class AccessTokenResponse
{
@JsonProperty("access_token")
protected String token;
...
public String getToken()
{
return token;
}
...
}
答案 0 :(得分:1)
您可以在getToken方法上设置属性名称,spring将使用它:
protected String token;
...
@JsonProperty("access_token")
public String getToken()
{
return token;
}