create - map to json javascript




creando Hashmap desde una cadena JSON (8)

creando un hashmap desde una cadena json en java?

Tengo una cadena json como {"phonetype":"N95","cat":"WP"} y quiero convertirla en un Hashmap estándar.

¿Cómo puedo hacerlo?


Analizar el objeto JSON y crear HashMap

public static void jsonToMap(String t) throws JSONException {

        HashMap<String, String> map = new HashMap<String, String>();
        JSONObject jObject = new JSONObject(t);
        Iterator<?> keys = jObject.keys();

        while( keys.hasNext() ){
            String key = (String)keys.next();
            String value = jObject.getString(key); 
            map.put(key, value);

        }

        System.out.println("json : "+jObject);
        System.out.println("map : "+map);
    }

Salida probada:

json : {"phonetype":"N95","cat":"WP"}
map : {cat=WP, phonetype=N95}

Esta es una operación simple sin necesidad de utilizar ninguna biblioteca externa.

Puedes usar esta clase en su lugar :) (maneja incluso listas, listas anidadas y json)

public class Utility {

    public static Map<String, Object> jsonToMap(Object json) throws JSONException {

        if(json instanceof JSONObject)
            return _jsonToMap_((JSONObject)json) ;

        else if (json instanceof String)
        {
            JSONObject jsonObject = new JSONObject((String)json) ;
            return _jsonToMap_(jsonObject) ;
        }
        return null ;
    }


   private static Map<String, Object> _jsonToMap_(JSONObject json) throws JSONException {
        Map<String, Object> retMap = new HashMap<String, Object>();

        if(json != JSONObject.NULL) {
            retMap = toMap(json);
        }
        return retMap;
    }


    private static Map<String, Object> toMap(JSONObject object) throws JSONException {
        Map<String, Object> map = new HashMap<String, Object>();

        Iterator<String> keysItr = object.keys();
        while(keysItr.hasNext()) {
            String key = keysItr.next();
            Object value = object.get(key);

            if(value instanceof JSONArray) {
                value = toList((JSONArray) value);
            }

            else if(value instanceof JSONObject) {
                value = toMap((JSONObject) value);
            }
            map.put(key, value);
        }
        return map;
    }


    public static List<Object> toList(JSONArray array) throws JSONException {
        List<Object> list = new ArrayList<Object>();
        for(int i = 0; i < array.length(); i++) {
            Object value = array.get(i);
            if(value instanceof JSONArray) {
                value = toList((JSONArray) value);
            }

            else if(value instanceof JSONObject) {
                value = toMap((JSONObject) value);
            }
            list.add(value);
        }
        return list;
    }
}

Para convertir su cadena JSON a hashmap use esto:

HashMap<String, Object> hashMap = new HashMap<>(Utility.jsonToMap(response)) ;

No hagas esto tú mismo, te sugiero.
Utilice una biblioteca, por ejemplo, la biblioteca de Gson de Google.

Gson


No hay librerías JSON, solo String y HashMap.
¡Lo mantiene simple!
Espero que les quede bien a todos.

// Ejemplo de JSON Transform to HashMap basado en String

    String tempJson = "{\"incomePhone\":\"213121122\",\"clientId\":\"1001\",\"clientAccountManager\":\"Gestor de Conta 1\",\"clientRetailBranch\":\"100\",\"phoneAccountManager\":\"7800100\"}";
    System.out.println(tempJson);

    String[] parts = tempJson.split(",");
    HashMap<String,String> jsonHash = new HashMap<String,String>();

    for(int i=0;i<parts.length;i++){
        parts[i]    =   parts[i].replace("\"", "");
        parts[i]    =   parts[i].replace("{", "");
        parts[i]    =   parts[i].replace("}", "");
        String[] subparts = parts[i].split(":");
        jsonHash.put(subparts[0],subparts[1]);
    }

Podrías usar la biblioteca de Gson

Type type = new TypeToken<HashMap<String, String>>() {}.getType();
new Gson().fromJson(jsonString, type);

Puedes usar la biblioteca Gson de Google para convertir json a Hashmap. Prueba el código de abajo

String jsonString = "Your JSON string";
HashMap<String,String> map = new Gson().fromJson(jsonString, new TypeToken<HashMap<String, String>>(){}.getType());

public class JsonMapExample {

    public static void main(String[] args) {
        String json = "{\"phonetype\":\"N95\",\"cat\":\"WP\"}";
        Map<String, String> map = new HashMap<String, String>();
        ObjectMapper mapper = new ObjectMapper();

        try {
            //convert JSON string to Map
            map = mapper.readValue(json, new TypeReference<HashMap<String, String>>() {});
            System.out.println(map);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Salida:

{phonetype=N95, cat=WP}

Puede ver este enlace es útil http://www.mkyong.com/java/how-to-convert-java-map-to-from-json-jackson/


public Map<String, String> parseJSON(JSONObject json, Map<String, String> dataFields) throws JSONException {
        Iterator<String> keys = json.keys();
        while (keys.hasNext()) {
            String key = keys.next();
            String val = null;
            try {
                JSONObject value = json.getJSONObject(key);
                parseJSON(value, dataFields);
            } catch (Exception e) {
                if (json.isNull(key)) {
                    val = "";
                } else {
                    try {
                        val = json.getString(key);
                    } catch (Exception ex) {
                        System.out.println(ex.getMessage());
                    }
                }
            }

            if (val != null) {
                dataFields.put(key, val);
            }
        }
        return dataFields;
    }






hashmap