繁体   English   中英

仅将少数 JSON 字段转换为 API object

[英]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。 否则,根据您使用的库,您可以搜索配置以忽略字段。

https://github.com/FasterXML/jackson-annotations

您可以使用 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM