我正在尝试将一个json解析为java对象。在这样做的时候,我得到了一个异常“java.lang.ClassCastException:无法将链接树Map转换为“。不知何故,有时候这段代码工作得很好。以下是代码。
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.internal.LinkedTreeMap;
public class Preference3 {
public static void main(String[] args) {
String jsonString1 = "{\"ca\":{\"industry\":[{\"path\":\"/abc/global/choice/in/financial\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/asset-management\",\"type\":\"checked\"}]},\"fr\":{\"country\":[{\"path\":\"/abc/global/choice/in/country/europe/italy\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/country/europe/switzerland\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/country/europe/sweden\",\"type\":\"checked\"}],\"services\":[{\"path\":\"/abc/global/choice/in/technology\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/technology/technology-media\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/technology/media\",\"type\":\"checked\"},{\"path\":\"/abc/global/choice/in/technology/telecommunications\",\"type\":\"checked\"}]}}";
Map<String, LinkedTreeMap<String, List>> map = new Gson().fromJson(jsonString1, LinkedTreeMap.class);
for (Map.Entry<String, LinkedTreeMap<String, List>> letterEntry : map.entrySet()) {
String territory = letterEntry.getKey();
for (Map.Entry<String, List> nameEntry : letterEntry.getValue().entrySet()) {
String preferenceType = nameEntry.getKey();
JsonArray preferenceElements = (JsonArray) new Gson().toJsonTree(nameEntry.getValue());
for (JsonElement preferenceElement : preferenceElements) {
JsonObject preferenceObj = preferenceElement.getAsJsonObject();
String preferencePath = preferenceObj.get("path").getAsString();
System.out.println(preferencePath);
}
}
}
}}
有没有其他更好的方法来解析这个json。我已经通过了一些博客,但没有找到任何其他的解决方案,并不能直接适应任何pojo。请帮助
暂无答案!
目前还没有任何答案,快来回答吧!