我制作了一个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/