【问题标题】:Unable to conver Map<String,String> of a class using Xstream无法使用 Xstream 转换类的 Map<String,String>
【发布时间】:2015-08-24 08:50:04
【问题描述】:

嗨,我有一个需要使用 XStream Api 转换为 XML 的类,我面临的问题是集合格式,因为集合被转换为我想要这样的东西。以下是我的代码:

Java 类:

public class Adapter {

    private String type;
    private String adapterName;
    private String adapterClass;
    private HashMap<String, String> param;

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getAdapterName() {
        return adapterName;
    }

    public void setAdapterName(String adapterName) {
        this.adapterName = adapterName;
    }

    public String getAdapterClass() {
        return adapterClass;
    }

    public void setAdapterClass(String adapterClass) {
        this.adapterClass = adapterClass;
    }

    public HashMap<String, String> getParam() {
        return param;
    }

    public void setParam(HashMap<String, String> param) {
        this.param = param;
    }

}

我得到以下输出:

<adapter>
  <type>connector</type>
    <adapterName>SFTP-connector</adapterName>
    <adapterClass>com.infinia.adapters.connector.SFTPConnector</adapterClass>
  <param>
    <entry>
      <string>username</string>
      <string>testuser</string>
    </entry>
    <entry>
      <string>host</string>
      <string>192.168.22.14</string>
    </entry>
    <entry>
      <string>password</string>
      <string>testPassword</string>
    </entry>
   </param>
 </adapter>
 <adapter>

而我期待以下输出:

<adapter>
      <type>connector</type>
      <adapterName>SFTP-connector</adapterName>
      <adapterClass>TestValue</adapterClass>
      <param>
        <entry  key="username" value="testuser"></entry>              
        <entry key="host" value="192.168.22.14"></entry>           
        <entry key="password" value="testPassword"> </entry>      
      </param>
</adapter>
<adapter>

【问题讨论】:

标签: java xml xstream


【解决方案1】:

您可以使用NamedMapConverter 来实现您的目标

    XStream xstream = new XStream();
    xstream.alias("adapter", Adapter.class);
    NamedMapConverter m = new NamedMapConverter(xstream.getMapper(), "entry", "key", String.class, "value", String.class, true, true, xstream.getConverterLookup());
    xstream.registerConverter(m);

【讨论】:

    猜你喜欢
    • 2014-09-25
    • 2018-03-22
    • 2019-12-06
    • 1970-01-01
    • 2012-06-30
    • 2013-05-24
    • 2014-01-29
    • 1970-01-01
    相关资源
    最近更新 更多