[英]Convert JSON to Object with JAXB only if all fields are filled out
[英]Convert only few JSON fields to API object
在 JSON 回复 API 给我的回复中,我有 100 多个字段,但我只对 3 个字段感兴趣。 例如,如果下面是完整的 JSON 响应
"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
我只想要 3 个字段
"data": "Click Here",
"size": 36,
"style": "bold"
这是我在 ArunApi.java 中的响应object看起来像
private String data;
private Integer size;
private String style;
当我拨打 REST 电话(下面是代码片段)时,它失败了
var response = webClient
.get()
.uri(endPoint)
.retrieve()
.bodyToMono(ArunApi.class)
.block();
由于我的 API 中只有 3 个字段,因此根本没有进行转换。 请帮忙
如果您使用的是 Jackson 库,则可以使用@JsonIgnoreProperties(ignoreUnknown = true)
注释您的 class。 否则,根据您使用的库,您可以搜索配置以忽略字段。
您可以使用 GenSON 解析整个 JSON 字符串。 使用 function parseKeys()
您可以获得包含所有密钥的 HashMap 并提取前三个。 GenSON 是我创建的一个新库,因为与您的问题类似。 链接: https://github.com/EvgeniGenchev/GenSON-lib 。
您可以尝试使用带有 JsonTypeInfo 和 JsonSubTypes 注释的抽象 class 来接收数据,然后将 map 与您需要的任何事物子类一起使用。 例如:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = RecurringTriggerJsonModel.class, name = "RECURRING"),
@JsonSubTypes.Type(value = SimpleTriggerJsonModel.class, name = "SIMPLE"),
@JsonSubTypes.Type(value = CronTriggerJsonModel.class, name = "CRON")
})
public abstract class TaskTriggerJsonModel {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.