gpt4 book ai didi

java - 无效定义异常 : No serializer found for inner class

转载 作者:太空宇宙 更新时间:2023-11-04 09:48:14 24 4
gpt4 key购买 nike

我有一个类,我想以 JSON 格式返回到 RestAPI 调用

return ResponseEntity.ok().cacheControl(CacheControl.maxAge(5, TimeUnit.MINUTES))
.body(hotelChart2);

类(class):

public class HotelChart2 {



public HotelChart2() {
super();
}

public class Statistics {

double min;
double max;
double average;

public Statistics() {
super();
}

public Statistics(double min, double max, double average) {
super();
this.min = min;
this.max = max;
this.average = average;
}

}

Map<LocalDateTime, DoubleSummaryStatistics> las24HPerHour;

Map<LocalDate, Statistics> last30DPerDay;

Map<LocalDate, Statistics> last3MPerDay;

Map<LocalDate, Statistics> last6MPerDay;

Map<LocalDate, Statistics> last1YPerDay;



public Map<LocalDateTime, DoubleSummaryStatistics> getLas24HPerHour() {
return las24HPerHour;
}

public void setLas24HPerHour(Map<LocalDateTime, DoubleSummaryStatistics> las24hPerHour) {
las24HPerHour = las24hPerHour;
}

public Map<LocalDate, Statistics> getLast30DPerDay() {
return last30DPerDay;
}

public void setLast30DPerDay(Map<LocalDate, Statistics> last30dPerDay) {
last30DPerDay = last30dPerDay;
}

public Map<LocalDate, Statistics> getLast3MPerDay() {
return last3MPerDay;
}

public void setLast3MPerDay(Map<LocalDate, Statistics> last3mPerDay) {
last3MPerDay = last3mPerDay;
}

public Map<LocalDate, Statistics> getLast6MPerDay() {
return last6MPerDay;
}

public void setLast6MPerDay(Map<LocalDate, Statistics> last6mPerDay) {
last6MPerDay = last6mPerDay;
}




public Map<LocalDate, Statistics> getLast1YPerDay() {
return last1YPerDay;
}

public void setLast1YPerDay(Map<LocalDate, Statistics> last1yPerDay) {
last1YPerDay = last1yPerDay;
}


}

但是我收到了这个错误:

Type definition error: [simple type, class com.tdk.api.json.HotelChart2$Statistics]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.tdk.api.json.HotelChart2$Statistics and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.tdk.api.json.HotelChart2["last3MPerDay"]->java.util.HashMap["2019-01-27"])
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:293)
at org.springframework.http.converter.AbstractGenericHttpMessageConverter.write(AbstractGenericHttpMessageConverter.java:103)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodProcessor.writeWithMessageConverters(AbstractMessageConverterMethodProcessor.java:290)

最佳答案

这两种解决方案都有效!

公开所有成员(默认情况下,Jackson 在公共(public)成员字段上工作)

 public double min; //note: members are made public
public double max;
public double average;
public Map<LocalDateTime, DoubleSummaryStatistics> las24HPerHour;
// ..... modify all map as public

如果要修改 Jackson 默认属性,请修改 ObjectMapper

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(mapper.getVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY));

关于java - 无效定义异常 : No serializer found for inner class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55149147/

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