package org.json; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; public class JSONConverter { public static String jsonize(Object o) throws JSONException { StringWriter writer = new StringWriter(); JSONWriter jsonWriter = new JSONWriter(writer); jsonize(o, jsonWriter); return writer.toString(); } private static void jsonize(Object o, JSONWriter jsonWriter) throws JSONException { if (o instanceof Map) { jsonWriter.object(); @SuppressWarnings("unchecked") Map<String, Object> m = (HashMap<String, Object>) o; for (String key : m.keySet()) jsonWriter.key(key).value(m.get(key)); jsonWriter.endObject(); return; } else if (o instanceof Collection) { jsonWriter.array(); @SuppressWarnings("unchecked") Collection<Object> l = (Collection<Object>) o; for (Object child : l) jsonize(child, jsonWriter); jsonWriter.endArray(); return; } throw new IllegalArgumentException("argument should be map or collection, " + o.getClass().getName()); } public static Map<String, Object> parse(JSONObject jsonObject) throws IOException { Map<String, Object> m = new HashMap<String, Object>(); String[] names = JSONObject.getNames(jsonObject); if (names == null) return m; for (String key : names) { try { Object value = jsonObject.get(key); if (value == JSONObject.NULL) value = null; else if (value instanceof JSONArray) value = parse((JSONArray) value); else if (value instanceof JSONObject) value = parse((JSONObject) value); m.put(key, value); } catch (JSONException e) { throw new IOException(e); } } return m; } public static Object parse(JSONArray jsonarray) throws IOException { List<Object> list = new ArrayList<Object>(); for (int i = 0; i < jsonarray.length(); i++) { try { Object o = jsonarray.get(i); if (o == JSONObject.NULL) list.add(null); else if (o instanceof JSONArray) list.add(parse((JSONArray) o)); else if (o instanceof JSONObject) list.add(parse((JSONObject) o)); else list.add(o); } catch (JSONException e) { throw new IOException(e); } } return list; } }