2016-04-04 81 views
4

我使用Retrofit2,我一直在問消耗以下JSON:改造:處理屬性,可以是空字符串或數組

{「地位」:「成功」, 有效載荷{ 「PROP1」:1234, 「PROP2」: 「」}}

的問題是,PROP2可以是空字符串或對象的數組。 (空陣列不是他們的選項)

我不記得有改進機制來處理這種類型的不一致性。我正在尋找一種配方,可能會收到此屬性作爲某種通用對象任何可能使用GSon以後解析它或其他一些替代方法來使其工作。

+0

你總是可以做解析式的'com.google.gson.JsonObject'。然後你可以檢查自己prop2是一個String還是一個JsonArray' – Remco

+0

但是我該如何檢查屬性是否嵌套在其他屬性中?我可以找到哪些鏈接?我只知道如何通過傳遞一個類來轉換json來檢查Gson的值,但在這種情況下,我無法將它傳遞給一個類 – JayJay

回答

0

你可以試試這個檢查PROP2是數組或一個空字符串

JsonObject jsonObject = new Gson().fromJson("{ \"status\":\"success\", \"payload\": { \"prop1\": 1234, \"prop2\": \"\" } }", JsonObject.class); 
JsonObject payload = jsonObject.getAsJsonObject("payload"); 
JsonElement jsonElement = payload.get("prop2"); 
if (jsonElement.isJsonArray()) { 
    // value of prop2 is an array 
} else if (jsonElement.isJsonPrimitive()) { 
    JsonPrimitive jsonPrimitive = jsonElement.getAsJsonPrimitive(); 
    if (jsonPrimitive.isString() && "".equals(jsonPrimitive.getAsString())) { 
     // value of prop2 is an empty String 
    } 
} 
相關問題