2017-10-12 72 views
1

我有這樣的JSON:如何反序列化沒有名稱和動態的json對象?

{ 
    "username": [ 
     "A user with that username already exists." 
    ], 
    "ruc": [ 
     "user with this ruc already exists." 
    ], 
    "code": [ 
     "user with this code already exists." 
    ], 
    "document_number": [ 
     "user with this document number already exists." 
    ] 
} 

屬性的名稱將是動態的和JSON的長度了。 我使用的是GSON工具,我創建了一個POJO,但沒有名稱,我無法引用此,這就是爲什麼我收到myError實例,爲空。 這是我的POJO

public class MyError { 
    public Map<String, Object> message = new HashMap<>(); 
} 

這是我GSON代碼

myError = new Gson().fromJson(response.errorBody().string(), MyError.class); 

而且我想顯示的消息中這樣每一個項目:

for (String key : myError.message.keySet()) { 
    Utils.showToast(getBaseContext(), "Message: " + myError.message.get(key) + " Field: " + key); 
} 

回答

1

你可以嘗試使用這個:

Map myError = new Gson().fromJson(s, Map.class); 

或者,如果你想使用你的類的JSON應該是這樣的:

{ "message": { "username": [ "A user with that username already exists." ], "ruc": [ "user with this ruc already exists." ], "code": [ "user with this code already exists." ], "document_number": [ "user with this document number already exists." ] } }

0

考慮使用GSON和Java本地JsonParser。