2017-10-12 12 views
1

Je possède ce JSON:Comment désérialiser un objet json sans nom ni dynamique?

{ 
    "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." 
    ] 
} 

Le nom des propriétés sera dynamique et la longueur du JSON aussi. J'utilise l'outil GSON et je crée un POJO mais sans nom, je ne peux pas faire référence à ceci, c'est pourquoi j'ai reçu cette instance myError, est null. Ceci est mon POJO

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

Et voici mon code GSON

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

Et je veux montrer un message pour chaque élément comme celui-ci:

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

Répondre

1

Vous pouvez essayer d'utiliser ceci:

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

Ou si vous voulez utiliser votre JSON de classe devrait ressembler à:

{ "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

Tenir compte à l'aide Gson et java natif JsonParser.