编辑响应正文中的字段名称

Edit field name in response body

我从第三方 api 从 REST 请求接收数据。

{"Category": {"Name":"name123", "Hint":"hint"},

... 但问题是字段名称以大写字母开头。

我认为一种解决方案可以是@JsonProperty("Category") 但这需要很多时间...

有很多关于这个问题的请求,这对我很有帮助。谢谢 ;)

您可以使用 Jackson 自定义 PropertyNamingStrategy:https://www.javacodegeeks.com/2013/04/how-to-use-propertynamingstrategy-in-jackson.html

根据您的情况,您将希望构建这样的策略:

import org.codehaus.jackson.map.MapperConfig;
import org.codehaus.jackson.map.PropertyNamingStrategy;
import org.codehaus.jackson.map.introspect.AnnotatedField;
import org.codehaus.jackson.map.introspect.AnnotatedMethod;

public class MyNameStrategy extends PropertyNamingStrategy
 {
  @Override
  public String nameForField(MapperConfig
                       config,
   AnnotatedField field, String defaultName) {
     return convert(defaultName);

  }
  @Override
  public String nameForGetterMethod(MapperConfig
                       config,
   AnnotatedMethod method, String defaultName) {
     return convert(defaultName);
  }

  @Override
  public String nameForSetterMethod(MapperConfig
                       config,
    AnnotatedMethod method, String defaultName) {
   String a = convert(defaultName); 
   return a;
  }

  public String convert(String defaultName )
  {
   char[] arr = defaultName.toCharArray();
   if(arr.length !=0)
   {
    if ( Character.isLowerCase(arr[0])){
     char upper = Character.toUpperCase(arr[0]);
     arr[0] = upper;
    }
   }
   return new StringBuilder().append(arr).toString();
  }

 }

在 class 中你想要解析的 JSON,只需使用创建的策略:

ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(new MyNameStrategy());

我找到了解决方案。

ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true); QuestionnaireDto questionnaireDto = objectMapper.readValue(response.getBody().toString(), QuestionnaireDto.class);