Library to encode/decode from json to java.util.Map?
You can use Google Gson for that. It has excellent support for Generic types.
Here's an SSCCE:
package com.stackoverflow.q2496494;import java.util.LinkedHashMap;import java.util.Map;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;public class Test { public static void main(String... args) { Map<String, String> map = new LinkedHashMap<String, String>(); map.put("key1", "value1"); map.put("key2", "value2"); map.put("key3", "value3"); Gson gson = new Gson(); // Serialize. String json = gson.toJson(map); System.out.println(json); // {"key1":"value1","key2":"value2","key3":"value3"} // Deserialize. Map<String, String> map2 = gson.fromJson(json, new TypeToken<Map<String, String>>() {}.getType()); System.out.println(map2); // {key1=value1, key2=value2, key3=value3} }}
JSON-Simple looks relatively easy to use (examples below).
Map to JSON:
Map map = new HashMap(); map.put("name", "foo"); map.put("nickname", "bar"); String jsonText = JSONValue.toJSONString(map);
JSON to List/Map:
String s = yourJsonString; List list = (JSONArray) JSONValue.parse(s); Map map = (JSONObject) list.get(0);
You can view the site from Json.org for the list of good JSON libraries in Java.
JSon.org's own implementation JSONObject
can do just that.From their JavaDoC
/** * Construct a JSONObject from a Map. * * @param map A map object that can be used to initialize the contents of * the JSONObject. */ public JSONObject(Map map);
you can do
JSONObject json = new JSONObject(map);
To convert JSON String back to object....
String jsonString = "{\"name\" : \"some name\", \"age\" : 10}";JSONObject json = new JSONObject(jsonString);
and you can access values like:
int age = json.getInt("age");
Constructor JavaDoC
Construct a JSONObject from a source JSON text string. This is the most commonly used JSONObject constructor.
Parameters: source A string beginning with
{
(left brace) and ending with}
(right brace).