0

我正在开发一种随处可见 json 的服务。但是,我使用的提供程序之一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);
    }

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

任何指针?

4

2 回答 2

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;
}
于 2013-01-15T13:29:58.197 回答
1

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

public JsonData(String jsonString) {
   if(isValidJson(jsonString){
        this.deserialize(jsonString);
   } else {
        this.xmldeserialize(jsonString);
   }
}
于 2013-01-15T13:38:11.087 回答