【问题标题】:Convert Flux<Document> to Flux<Object> or List<Object>将 Flux<Document> 转换为 Flux<Object> 或 List<Object>
【发布时间】:2022-01-15 00:07:00
【问题描述】:

我有一个对象

class Employee {

    private String salary;
    private String empId;
    private String departmentId;
    private String status;
} 

还有一种返回 Flux 的方法,Document 的类型是 org.bson.Document,示例

[
    {
        "empId": "B123",
        "salary": "1000",
        "departmentId": "winna",
        "status": "START"
    },
    {
        "empId": "A123",
        "salary": "2000",
        "departmentId": "dinna",
        "status": "COMPLETED"
    }
] 

如何在 JAVA 中将 Flux 转换为 Flux 或 List

【问题讨论】:

    标签: java spring-webflux project-reactor bson


    【解决方案1】:

    Flux API 是Project Reactor 库的一部分。如果您想知道哪个运营商适合您的情况,我建议您通过Which operator do I need? 官方参考指南的部分。

    在这种情况下,您需要以下part

    我想转换现有数据:

    在一对一的基础上(例如,字符串的长度):map (Flux|Mono)

    因此,您需要map 运算符将Document 实例转换为Employee

    【讨论】:

    • 我用了地图,没用
    • @ShrutiGusain 更新您的问题。
    • 已更新问题现已推出
    【解决方案2】:

    我正在使用这个。它运行良好。 studentService.getAll() 使用映射返回 Flux&lt;Student&gt; 我可以转换为 Flux&lt;String&gt;。你需要考虑@Ikatiforis 的回答。

    在你的情况下应该可以工作

    documentFlux.map(d-> {
                Employee e = new Employee();
                //set values
                return e;
            });
    

    【讨论】:

    • 抱歉,因为第一个助焊剂是助焊剂,所以它不起作用。 Document 是 org.bson.Document,因此它没有 getter 来获取值并将其设置为新对象。
    • 也更新了问题,抱歉我错过了
    • 那么你的问题是关于 bson 到 java 对象。
    • 然后在map方法中你需要将bson转换为json。然后 json 到你的对象。可以参考这个baeldung.com/java-convert-bson-to-json
    猜你喜欢
    • 2020-10-04
    • 2021-02-06
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 2020-11-11
    • 2021-07-27
    相关资源
    最近更新 更多