我正在研究一种随处可见的服务。但是,我使用的其中一个提供程序使用XML
作为序列化格式,因此我希望能够使用相同的接口来解析(和吐出)JSON
与XML
。
问题是,我不知道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);
}
注意两个相关构造函数如何将普通字符串作为参数。
任何指针?
答案 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);
}
}