当前位置: 首页 > 知识库问答 >
问题:

Spring Webflux-WebClient:如何直接获得嵌套在更大响应中的列表?

秦英发
2023-03-14

关于Spring Webflux的小问题,以及如何直接获取http响应中的Pojo嵌套列表。

我们正在使用一个API,它的响应类似于

{
    "noNeedThisField": "I do not need this",
    "listOfWhatIwant": [
        {
            "personName": "Alice",
            "personAge": "11"
        },
        {
            "personName": "Bob",
            "personAge": "22"
        },
        {
            "personName": "Charlie",
            "personAge": "33"
        }
    ],
    "uselessField": "This is useless", 
    "manyFieldsNoNeed": "it is one response, which contains a lot of fields that I do not need, I just need to retrieve the list DIRECTLY please",
    "noNeed": true,
    "anotherNotImportant": "this is not important at all"
}

基本上,它是一个响应,其中包含很多我不需要的字段,加上其中的类型列表元素,我想直接获取。

如果我创建两个不同的类,第一个

public class PojoWithListAndOtherNoNeedFields {

private     String             noNeedThisField;
    private List<MyNestedPojo> listOfWhatIwant;
    private String             uselessField;
    private String             manyFieldsNoNeed;
    private boolean            noNeed;
    private String             anotherNotImportant;
}

//getters setters

第二个


public class MyNestedPojo {

    private String             personName;
    private String             personAge;

//getters setters

}

并像这样调用Webclient:

public Mono<PojoWithListAndOtherNoNeedFields> sendReqest() {
        return webClient.mutate().baseUrl("url").build().post().uri("/route").retrieve().bodyToMono(PojoWithListAndOtherNoNeedFields.class);
    }

它工作得很好!我只需要携带一个我在代码中不需要的非常大的类,每次用getter检索我需要的嵌套列表。

然而,我想知道是否有可能做类似的事情(这不起作用)

public Mono<List<MyNestedPojo>> sendReqest() {
        return webClient.mutate().baseUrl("url").build().post().uri("/route").retrieve().bodyToMono(List<MyNestedPojo>.class);
    }

为了直接检索嵌套的元素。我的目标是完全摆脱PojoSusListAnd其他NoNeedFields,并获得List

如何执行这在一个正确的方式在Spring使用WebClient请?

非常感谢。

共有1个答案

薛元忠
2023-03-14

您可以使用@JsonIgnoreProperties注释通知ObjectMapper在从json反序列化到POJO时忽略POJO中未包含的任何字段。

@JsonIgnoreProperties(ignoreUnknown = true)
public class PojoWithListAndOtherNoNeedFields {
    private List<MyNestedPojo> listOfWhatIwant;

}

public class MyNestedPojo {
    private String personName;
    private String personAge;
}

JavaDocs

 类似资料:
  • 请帮我找出问题所在。我太过分了,请帮我解决这个问题

  • 我在Spring启动时使用webClient提出请求,这里是上面的请求: 我的问题是如何在执行另一条指令之前等待请求的结果

  • 问题内容: 我想知道如何使用XMLHttpRequest加载远程URL的内容,并将所访问站点的HTML存储在JS变量中。 说,如果我想加载并Alert()的HTML,我该怎么做? 问题答案: 您可以在等于时得到它。 这是一个示例(与IE6 / 7不兼容)。 为了获得更好的跨浏览器兼容性,不仅可以与IE6/7兼容,而且还可以解决某些浏览器特定的内存泄漏或错误,并且为了降低触发Ajaxical请求的冗

  • 问题内容: 我正在使用spring-webflux WebClient (内部版本20170502.221452-172)访问Web应用程序,该Web应用程序生成Entry对象流(application / stream + json),如下所示: 尽管Entry对象的反序列化对于使用标准通用类型(包括Java时间(JSR-310)数据类型,如java.time.Instant)的POJO都可以正

  • 我正在使用spring-webflux WebClient(build 20170502.221452-172)访问一个Web应用程序,该应用程序生成一个条目对象流(application/stream+JSON),如下所示: 虽然条目对象的反序列化对于使用标准通用类型(包括Java.time.instant等Java time(JSR-310)数据类型)的POJO很好,但我想知道,为了将任何自定

  • 我一直在努力学习关于如何使用的最简单的教程,我认为这是与相比的下一个最棒的教程。 例如,https://www.baeldung.com/spring-5-webclient#4-geting-a-response 因此,当我尝试对https://petstore.swagger.io/v2/pet/findbystatus?status=available执行同样的操作时,