将Json占位符文件映射到java对象



所以我有下面的JSON来表示一个City对象,我想用JAVA将其映射到一个对象。这用于过滤掉不需要的字段

{
"class": [
{
"id": "default",
"type": [
"riskType",
"firstTime"
],
"direction": [],
"town": [
"leader",
{
"streets": [
"mainStreet"
]
}
]
}
]
}

为了绘制它,我使用ojectMapper.readValue(inputStream, new TypeReference<HashMap<String, Set<PayloadClass>>>() { });

我的有效载荷类别如下:

@Data
@EqualsAndHashCode(exclude = {"town", "direction", "type"})
@NoArgsConstructor
public class PayloadClass {
private String id;
@NonNull private Set<String> type = Collections.emptySet();
@NonNull private Set<String> direction = Collections.emptySet();
@NonNull private Set<Town> town = Collections.emptySet();

我所在的城镇班级就是这样做的,代表一个城镇有一个领导和街道

@Data
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class Town{
@JsonProperty(value = "leader")
private String leader;
@JsonProperty(value = "streets")
private Set<String> streets = Collections.emptySet();

问题在于映射,它试图在一个对象内映射引线和街道集。

然后我得到以下错误,但不确定原因:

U [main] ERROR - Cannot construct instance of ` 
com.Town` (although at least one Creator 
exists): no String-argument constructor/factory method to deserialize from String value 
('leader')
at [Source: (BufferedInputStream); line: 16, column: 9] (through reference chain: 
java.util.HashMap["PayloadClass"]->java.util.HashSet[0]- 
com.PayloadClass["town"]->java.util.HashSet[1])

我正试图为上游应用程序保留这种格式的JSON,希望我能在映射类型中解决这个问题。

因此,我试图添加的新领域是Json内部的领导者领域。如果没有此字段,它将毫无问题地执行。

您的json格式错误。如果town是一个城市对象数组,其中包含一个leader和一个街道名称数组,那么您应该用json:编写

{
"town": [
{
"leader": "",
"streets" :  [
"mainStreet"
]
}
]
}

最新更新