gpt4 book ai didi

java - JSON - 让 Jackson 在序列化时使用 JsonProperty

转载 作者:行者123 更新时间:2023-12-01 09:47:34 31 4
gpt4 key购买 nike

是否可以通过简单的方式进行配置,以便 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 received: "token":"2YotnFZFEjr1zCsicMWpAA","expiresIn":3600,"refreshToken":"YES","tokenType":"example"}

抛出异常

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;
}
...
}

最佳答案

您可以在 getToken 方法上设置属性名称,spring 将使用它:

  protected String token;

...
@JsonProperty("access_token")
public String getToken()
{
return token;
}

关于java - JSON - 让 Jackson 在序列化时使用 JsonProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864982/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com