将 Datatable 转换为具有空值的对象

Posted

技术标签:

【中文标题】将 Datatable 转换为具有空值的对象【英文标题】:Converting Datatable to object with null values 【发布时间】:2022-01-07 22:55:06 【问题描述】:

大家好,只是想知道我是否在这里遵循最佳做法。

我有如下步骤定义

public class StepDefinitions 

    @DataTableType
    public Author authorEntry(Map<String, String> entry) 
        return new Author(
            entry.get("firstName"),
            entry.get("lastName"),
            entry.get("famousBook"));
    

    @Given("There are my favorite authors")
    public void these_are_my_favourite_authors(List<Author> authors) 
        // step implementation
    
   

然后我的功能文件可能类似于

        Feature: this is a feature
          Scenario: this is a scenario
            Given There are my favorite authors
            |firstName| lastName |
            | first   | last     |

         Scenario: this is another scenario
            Given There are my favorite authors
            |firstName| lastName | famousBook |
            | first   | last     | book       |
           

因此,在第一步中,它将创建一个 Author 对象,但使用 FamousBook == null。

由于我正在创建用于 REST 请求的对象,而 jackson 将忽略空值,是否可以创建这样的对象?

【问题讨论】:

可以加Author类代码吗? 【参考方案1】:

您的示例使用了错误的数据结构。你可以参考这个resource给出不同表类型的例子。

在你的情况下,你有一张桌子

|firstName| lastName |
| first   | last     |

并尝试将其解析为Map&lt;String, String&gt; entry,这将产生以下映射:

[key1 = firstName, value1 = lastName]
[key2 = first, value2 = last]

如果您需要将其视为顶行中的标题,则需要将其解析为List&lt;Map&lt;String, String&gt;&gt;

【讨论】:

以上是关于将 Datatable 转换为具有空值的对象的主要内容,如果未能解决你的问题,请参考以下文章

VBScript:将具有空值的参数传递给存储过程?

对 DataTable 字符串列进行排序,但底部为空/空

将数据存储为具有空/空值的 HashMap 中的键是一个好主意吗?

具有未定义和空值的排序对象数组

将具有 nan 值的 str 类型字典转换为字典类型对象

具有空值的 WPF ComboBox SelectedValue 绑定显示为空白