来自json或xml字符串的对象构造函数

时间:2013-01-15 13:23:44

标签: java xml json constructor

我正在研究一种随处可见的服务。但是,我使用的其中一个提供程序使用XML作为序列化格式,因此我希望能够使用相同的接口来解析(和吐出)JSONXML

问题是,我不知道XML类型或对象可以让我轻松覆盖我的构造函数。 希望澄清我的观点,这里有一些代码:

public class JsonData {
    private Hashtable<String, Variant> map = new Hashtable<String, Variant>();

    public JsonData() {
    }

    public JsonData(String jsonString) {
        this.deserialize(jsonString);
    }

理想情况下,我希望第三个构造函数执行以下操作:

    public JsonData(XMLString jsonString) {
        this.xmldeserialize(jsonString);
    }

注意两个相关构造函数如何将普通字符串作为参数。

任何指针?

2 个答案:

答案 0 :(得分:3)

您可以使用静态方法从json或xml字符串创建对象:

public static JsonData fromJson(String json) {
    JsonData data = new JsonData();
    data.deserializeJson(json);
    return data;
}

public static JsonData fromXml(String xml) {
    JsonData data = new JsonData();
    data.deserializeXml(xml);
    return data;
}

答案 1 :(得分:1)

您不能只检查输入是json还是xml(使用正则表达式)并调用适当的方法来反序列化。 喜欢

public JsonData(String jsonString) {
   if(isValidJson(jsonString){
        this.deserialize(jsonString);
   } else {
        this.xmldeserialize(jsonString);
   }
}