java - 如何将 map 转换为对象?

标签 java hashmap apache-commons-beanutils

我制作了一个Map来存储SOAPMessage主体上所有标签的值,因此Map的键是节点名称,值是文本内容。我有一个对象,其中已经有以节点名称命名的字段,我需要做的是根据其映射对应项设置它们的值。

假设我在 SOAPMessage 上有一个名为“Summary”的节点,将会有一个名为“Summary”的映射键以及一个名为“Summary”的对象字段。我需要将对象字段“Summary”设置为 Map.get("Summary") 的值。

我知道我可以用每个字段的 setter 填充我的代码,但是有没有办法从 map 设置整个对象?

这是我创建 map 的方法。

private static Map<String, String> mapIncidentInfo(SOAPMessage soapResponse) throws SOAPException {

    Map<String, String> fields = new HashMap<String, String>();
    NodeList nodes = soapResponse.getSOAPBody().getFirstChild().getChildNodes();

    for (int i = 0; i < nodes.getLength(); i++) {
        Node node = nodes.item(i);
        fields.put(node.getNodeName(), node.getTextContent());
    }

    return fields;
}

这可以用作对象类示例:

public class IncidentPO {

    private String Submitter;
    private String Submit_Date;
    private String Last_Modified_By;
    private String Last_Modified_Date;
    private String Status;
    private String Short_Description;

    public IncidentPO(String Submitter, String Submit_Date, String Last_Modified_By, String Last_Modified_Date, String Status, String Short_Description) {
    this.Submitter                      = Submitter;
    this.Submit_Date                    = Submit_Date;
    this.Last_Modified_By               = Last_Modified_By;
    this.Last_Modified_Date             = Last_Modified_Date;
    this.Status                         = Status;
    this.Short_Description              = Short_Description;

    //getters and setters here

最佳答案

没有简单的方法(没有库)将 Map 转换为对象。直接的选择是在构造函数中提供 Map 并让它自行填充。

public IncidentPO(Map<String, String> map) {
    this.Submitter = map.get("Submitter");
    this.Submit_Date = map.get("Submit_Date");
    // etc
}

关于java - 如何将 map 转换为对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58225191/

相关文章:

java - 如何将名称为 <%some code %> 的单选按钮传递给 java 操作类?

java - 为什么Java HashMap调整大小或重新哈希不能采用像Redis这样的渐进方法

java - BeanUtils.copyProperties() 在 Tomcat 上使用时抛出 NullPointerException

java - 使用 BeanUtils 自定义将 XMLGregorianCalendar 转换为日期

java - 动态添加项目到ListView

java - 如何将复选框添加到表中以读取和写入它在 JavaFX 中表示的对象属性

Java:从 HashMap 读取可以改变其状态吗?

java - 比较和排序 hashmap java 中值的数组列表

android - 是否有 Property Utils 的 Android 兼容替代品?

java - 创建具有 IDE 上下文行为的 Java 注解