Hay una manera de convertir una Cadena que contiene json a un HashMap, donde cada tecla es un json-clave y el valor es el valor de la json-clave? El json que no tiene anidado valores. Yo estoy usando la Gson lib.

Por ejemplo, dado JSON:

{
"id":3,
"location":"NewYork"
}

resultante HashMap:

<"id", "3">
<"location", "NewYork">

Gracias

  • Parece bastante poco amigable bienvenida a un nuevo usuario. Buscando la respuesta, no es en absoluto evidente, y casi simple. Que utiliza TypeToken para nada, nunca?
  • No estoy realmente seguro de lo que quieres decir con «una muy hostiles de la recepción.» Hice post & olvidarse de un abrasivo comentario que se acaba de eliminar? Para responder a tu pregunta: yo no uso GSON, así que yo no uso TypeToken, pero yo hacer uso el equivalente en Jackson bastante frecuencia.
  • Había un comentario acerca de pedir lo que se había intentado (con un enlace) y diciendo que la pregunta era muy simple.
  • Relacionados con la stackoverflow.com/questions/2779251/…

3 Comentarios

  1. 112

    Uso TypeToken, como por el GSON FAQ:

    Gson gson = new Gson();
    Type stringStringMap = new TypeToken<Map<String, String>>(){}.getType();
    Map<String,String> map = gson.fromJson(json, stringStringMap);

    Ningún casting. No innecesaria la creación de objetos.

    • Gracias, su trabajo!
    • ¿Cuál es la importación para el Tipo? Se ofrece docenas de opciones.
    • leer el TypeToken#getType() JavaDoc para el FQCN de el tipo de retorno.
    • java.lang.reflect.Type stringStringMap = new com.google.gson.reflect.TypeToken<Map<String, String>>(){}.getType();
    • Esto funciona, pero el tipo de valor no es respetada, todo lo que se tratan como cadenas. Si lo cambia a Map<String, Object> entonces usted realmente va a obtener correctamente escrito de valores.
    • la pregunta sutilmente sugiere que los valores deben ser cadenas, pero seguro.
    • Bola Ahh sí, yo veo a la salida deseada. Yo estaba buscando en el real JSON de entrada.
    • Tengo una pregunta similar con Gson aquí. Quería ver si usted me puede ayudar. Yo tengo una solución, pero el problema es que se ve muy desordenado sólo para analizar un JSON en un Mapa.

  2. 7

    Si puedo usar el TypeToken solución con un Mapa<Enum, Objeto> puedo obtener la «clave duplicada: null».

    La mejor solución para mí es:

    String json = "{\"id\":3,\"location\":\"NewYork\"}";
    Gson gson = new Gson();
    Map<String, Object> map = new HashMap<String, Object>();
    map = (Map<String, Object>)gson.fromJson(json, map.getClass());

    Resultado:

    {id=3.0, location=NewYork}
  3. 2

    Me gusta:

    private static class MyMap extends HashMap<String,String> {};
    ...
    MyMap map = gson.fromJson(json, MyMap.class);

Dejar respuesta

Please enter your comment!
Please enter your name here