2015-07-20 7 views
4

У меня возникли проблемы с преобразованием JsonElement в строку. Я использую вызов метода getAsString(), но я продолжаю получать исключение из несобственной операции. Я проверил вывод get, который я вызываю, и кажется правильным.GSON JsonElement to String

Вот мой код, К сожалению для бедных соглашения об именовании:

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

вы уверены, что ваш JSONObject содержит как «начало» и «идентификатор», или просто «идентификатор», как во втором снимке? – kiruwka

+0

Я получаю идентификатор для календаря, затем беру данные календаря с этим идентификатором. «start» находится в событиях, которые я получаю из этого календаря, когда я печатаю JsonElement, он выглядит так {«dateTime»: «2015-09-10T12: 05: 00-04: 00»}. Я просто не могу его преобразовать в строку ... – tallaghi

ответ

7

Возможно ли, что item.get("start") является JsonNull?

не проверить первый:

item.get("start").isJsonNull() ? "" : item.get("start").getAsString(); 
+0

Я только что запустил его, чтобы проверить, и он не является нулевым, как я уже говорил выше, он возвращает {"dateTime": "2015-09-10T12: 05: 00-04: 00" } просто ошибки, когда я пытаюсь получить его как строку. – tallaghi

+0

@tallaghi вы не возражаете, отправляя свою строку json, с которой работаете? Таким образом, нам будет легче помочь –

+0

Я собирался опубликовать Json, когда нашел проблему, я не форматировал Json, чтобы посмотреть на нее и пропустить объект. Спасибо, что помогли мне указать на это. – tallaghi

2

I нашел Гсона очень прямым и полезным для маршала и развязать объект в 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); 
} 
+2

Какую часть вопроса вы отвечаете? –

+0

Я отвечал на неявный вопрос: «Там что-нибудь лучше?» Его называли мышлением вне рамки. –

Смежные вопросы