GSON JsonElement到String

时间:2015-07-20 16:28:44

标签: java json gson

我在将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();

2 个答案:

答案 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);
}