我在将JsonElement转换为字符串时遇到了一些麻烦。我正在使用getAsString()方法调用,但我不断得到不支持的操作异常。我检查了我正在调用的get的输出,看起来是正确的。
这是我的代码,对不起的命名约定抱歉:
JsonParser jp2 = new JsonParser();
JsonObject root2 = jp2.parse(getAllEventsResults.get_Response()).getAsJsonObject();
JsonArray items2 = root2.get("items").getAsJsonArray();
for(int i=0; i<items2.size(); i++){
JsonObject item = items2.get(i).getAsJsonObject();
System.out.println(item.get("start").getAsString());}
这个最奇怪的部分是我在上面用这段代码做了同样的事情:
JsonParser jp = new JsonParser();
JsonObject root = jp.parse(getAllCalendarsResults.get_Response()).getAsJsonObject();
JsonArray items = root.get("items").getAsJsonArray();
JsonObject firstItem = items.get(0).getAsJsonObject();
String firstCalId = firstItem.get("id").getAsString();
答案 0 :(得分:10)
item.get("start")
可能是JsonNull
吗?
先检查一下:
item.get("start").isJsonNull() ? "" : item.get("start").getAsString();
答案 1 :(得分:2)
我发现Gson非常直接,对于编组很有用,并且将一个对象解组为json,反之亦然。
就像两个辅助方法一样简单..
/**
* Converts an object to a Json String
*
* @param obj - The object to convert to Json
* @param dfString - data format pattern.
* @return
*/
public static String toJson(Object obj, String dfString) {
Gson gson = new GsonBuilder().setDateFormat(dfString).create();
return gson.toJson(obj);
}
/**
* Converts a Json String to the specified Class<T>
*
* @param json - The Json String to covert to Class<T> instance
* @param obj - The Class<T> representation of the Json String
* @return
*/
public static <T> T fromJson(String json, Class<T> obj, String dfString) {
Gson gson = new GsonBuilder().setDateFormat(dfString).create();
return gson.fromJson(json, obj);
}