如何从另一个包中向 Java class 添加无参数构造函数?
How to add No Argument Constructor to Java class from another package?
我正在尝试读取一个 json 文件并转换为对象,这对其他 类 工作正常,但在这种情况下,我的模型有 GeoJsonMultiPolygon
来自 package org.springframework.data.mongodb.core.geo;
和 不包含无参数的构造函数
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.mongodb.core.geo.GeoJsonMultiPolygon` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (BufferedInputStream); line: 12, column: 5] (through reference chain: java.util.ArrayList[0]->data.countryboundaries.CountryBoundaries["geometry"])
型号:
@Getter
@Setter
@ToString()
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@Document(collection = "country-boundaries")
public class CountryBoundaries {
@Id
private String id;
@EqualsAndHashCode.Exclude
private String type;
@EqualsAndHashCode.Exclude
private CountryBoundariesProperties properties;
@EqualsAndHashCode.Exclude
private GeoJsonMultiPolygon geometry;
}
代码:
ObjectMapper mapper = new ObjectMapper();
InputStream is = Country.class.getResourceAsStream("/country-boundaries.json");
List<CountryBoundaries> countryBoundaries = mapper.readValue(is, new TypeReference<>(){});
countryBoundariesRepository.saveAll(countryBoundaries);
由于我无法修改库中的代码并使用 ObjectMapper 填充几何对象,我该如何绕过此错误?
检查 GeoJsonModule 的静态方法。它包含包含 geo json 类.
的序列化器和反序列化器的模块
注册您的 ObjectMapper
实例。
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(GeoJsonModule.geoJsonModule());
geoJsonModule()
包含序列化器和反序列化器,如果您只需要反序列化器,请使用 deserializers()
.
我正在尝试读取一个 json 文件并转换为对象,这对其他 类 工作正常,但在这种情况下,我的模型有 GeoJsonMultiPolygon
来自 package org.springframework.data.mongodb.core.geo;
和 不包含无参数的构造函数
Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.mongodb.core.geo.GeoJsonMultiPolygon` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)
at [Source: (BufferedInputStream); line: 12, column: 5] (through reference chain: java.util.ArrayList[0]->data.countryboundaries.CountryBoundaries["geometry"])
型号:
@Getter
@Setter
@ToString()
@EqualsAndHashCode
@Builder
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
@Document(collection = "country-boundaries")
public class CountryBoundaries {
@Id
private String id;
@EqualsAndHashCode.Exclude
private String type;
@EqualsAndHashCode.Exclude
private CountryBoundariesProperties properties;
@EqualsAndHashCode.Exclude
private GeoJsonMultiPolygon geometry;
}
代码:
ObjectMapper mapper = new ObjectMapper();
InputStream is = Country.class.getResourceAsStream("/country-boundaries.json");
List<CountryBoundaries> countryBoundaries = mapper.readValue(is, new TypeReference<>(){});
countryBoundariesRepository.saveAll(countryBoundaries);
由于我无法修改库中的代码并使用 ObjectMapper 填充几何对象,我该如何绕过此错误?
检查 GeoJsonModule 的静态方法。它包含包含 geo json 类.
的序列化器和反序列化器的模块注册您的 ObjectMapper
实例。
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(GeoJsonModule.geoJsonModule());
geoJsonModule()
包含序列化器和反序列化器,如果您只需要反序列化器,请使用 deserializers()
.