不是那么典型的情况。
我有一个从服务器下一个JSON字符串:
{"SomeElements":[{"Id":"Title","Info":"{\"Text\": \"Sometext\"}"}]}
GSON如果反序列化的字符串包含另一个JSON
这里是它的图形表示:
的问题是,串Info
包含另一个JSON
字符串。
这里是我的POJO:
public class Test {
private ArrayList<SomeElement> SomeElements;
public class SomeElement {
private String Id;
private String Info;
}
}
问题 - 是有一些方法来分析Info
字符串不是字符串,而是作为HashMap中(例如)在我的POJO?
如果我尝试将其声明为HashMap<String, String>
,则出现错误"Expected OBJECT, but was STRING"
。
什么是处理这个问题的最佳方法?自定义解串器是唯一的方法?
!!这个问题不是重复的!
我无法更改服务器的JSON响应。
请仔细阅读 - 我问,是否有可能解析Info
字符串不是字符串,而是另一个JSON。
解决方案我结束了下一个。
我宣称private LinkedTreeMap<String, String> infoMap;
并首先反序列化Info
作为字符串。然后:
public LinkedTreeMap<String, String> getInfoMap() {
if (infoMap == null) {
infoMap = new Gson().fromJson(info, new TypeToken<Map<String, String>>(){}.getType());
}
return infoMap;
}
我想这是不是编写自定义解串器更容易,但也许在更复杂的情况下,自定义解串器将是唯一的选择。
因此,通常情况下@arjabbar的答案会更好。
你为什么要这样做? – once2go
简单 - 我想解析从服务器端的响应到一个可用的类。 –