2014-05-02 1 views
0

J'ai un JSON avec une valeur de clé dynamique. Par exemple:Désérialiser une clé JSON dynamique à l'aide de Gson + Volley

"location_id": { 
    "0": 0, 
    "1": 1, 
    "2404": "Section 9 Shah Alam - 3.085376,101.522716", 
    "272": "Bukit Jelutong - 3.103953,101.527704", 
    "545": "Giant Shah Alam - 3.084166,101.549152", 
    ... 
} 

En général, ce que je ferais à une valeur clé fixe est de définir dans une classe POJO, comme ceci:

Json:

"location_id": { 
    "id" : "hehe", 
    "name": "herpderp", 
    "location": "Section 9 Shah Alam - 3.085376,101.522716", 
    ... 
} 

POJO ressemblera ceci:

private String id; 
private String name; 
private String location; 
... 

Et en utilisant GsonRequest, il analysera le JSON au POJO. Mais, comment est-ce que je désérialise un JSON avec une valeur de clé dynamique?

Répondre

0

Je l'ai eu. Merci @Mattia pour la réponse.

J'ai seulement besoin de mettre Map<String, String> pour obtenir les paires de valeur-clé entières comme chaîne.

1

Vous devez analyser manuellement votre JSON si vous avez une valeur de clé dynamique. Par exemple, faites une requête simple, puis dans le rappel de réponse, analysez les données.

JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 
     @Override 
     public void onResponse(final JSONObject response) { 
      //get a fake property from response 
      String title = response.optString("title"); 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(final VolleyError error) { 
      //handle errors 
     } 
    } 
    ) { 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      //get request headers 
     } 
    }; 
Questions connexes