Android examples for File Input Output:Json String
Convert Object to Json String
//package com.java2s; import java.lang.reflect.Method; import java.util.Collection; import java.util.Map; import java.util.Set; public class Main { @SuppressWarnings("unchecked") public static String toJson(final Object o) { if (o == null) { return "null"; }//from w ww . j av a 2 s . co m if (o instanceof String) //String { return string2Json((String) o); } if (o instanceof Boolean) //Boolean { return boolean2Json((Boolean) o); } if (o instanceof Number) //Number { return number2Json((Number) o); } if (o instanceof Map) //Map { return map2Json((Map<String, Object>) o); } if (o instanceof Collection) //List Set { return collection2Json((Collection) o); } if (o instanceof Object[]) // { return array2Json((Object[]) o); } if (o instanceof int[])// { return intArray2Json((int[]) o); } if (o instanceof boolean[])// { return booleanArray2Json((boolean[]) o); } if (o instanceof long[])// { return longArray2Json((long[]) o); } if (o instanceof float[])// { return floatArray2Json((float[]) o); } if (o instanceof double[])// { return doubleArray2Json((double[]) o); } if (o instanceof short[])// { return shortArray2Json((short[]) o); } if (o instanceof byte[])// { return byteArray2Json((byte[]) o); } if (o instanceof Object) //? { return object2Json(o); } throw new RuntimeException(": " + o.getClass().getName()); } static String string2Json(final String s) { final StringBuilder sb = new StringBuilder(s.length() + 20); sb.append('\"'); for (int i = 0; i < s.length(); i++) { final char c = s.charAt(i); switch (c) { case '\"': sb.append("\\\""); break; case '\\': sb.append("\\\\"); break; case '/': sb.append("\\/"); break; case '\b': sb.append("\\b"); break; case '\f': sb.append("\\f"); break; case '\n': sb.append("\\n"); break; case '\r': sb.append("\\r"); break; case '\t': sb.append("\\t"); break; default: sb.append(c); } } sb.append('\"'); return sb.toString(); } static String boolean2Json(final Boolean bool) { return bool.toString(); } static String number2Json(final Number number) { return number.toString(); } static String map2Json(final Map<String, Object> map) { if (map.isEmpty()) { return "{}"; } final StringBuilder sb = new StringBuilder(map.size() << 4); //4 sb.append('{'); final Set<String> keys = map.keySet(); for (final String key : keys) { final Object value = map.get(key); sb.append('\"'); sb.append(key); //? sb.append('\"'); sb.append(':'); sb.append(toJson(value)); //? sb.append(','); } // ',' '}': sb.setCharAt(sb.length() - 1, '}'); return sb.toString(); } static String collection2Json(final Collection<Object> c) { final Object[] arrObj = c.toArray(); return toJson(arrObj); } static String array2Json(final Object[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); //4 sb.append('['); for (final Object o : array) { sb.append(toJson(o)); sb.append(','); } // ',' ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String intArray2Json(final int[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final int o : array) { sb.append(Integer.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String booleanArray2Json(final boolean[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final boolean o : array) { sb.append(Boolean.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String longArray2Json(final long[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final long o : array) { sb.append(Long.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String floatArray2Json(final float[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final float o : array) { sb.append(Float.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String doubleArray2Json(final double[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final double o : array) { sb.append(Double.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String shortArray2Json(final short[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final short o : array) { sb.append(Short.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } static String byteArray2Json(final byte[] array) { if (array.length == 0) { return "[]"; } final StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (final byte o : array) { sb.append(Byte.toString(o)); sb.append(','); } // set last ',' to ']': sb.setCharAt(sb.length() - 1, ']'); return sb.toString(); } public static String object2Json(final Object bean) { // if (bean == null) { return "{}"; } final Method[] methods = bean.getClass().getMethods(); // final StringBuilder sb = new StringBuilder(methods.length << 4); //4 sb.append('{'); for (final Method method : methods) { try { final String name = method.getName(); String key = ""; if (name.startsWith("get")) { key = name.substring(3); // final String[] arrs = { "Class" }; boolean bl = false; for (final String s : arrs) { if (s.equals(key)) { bl = true; continue; } } if (bl) { continue; // } } else if (name.startsWith("is")) { key = name.substring(2); } if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0) { if (key.length() == 1) { key = key.toLowerCase(); } else if (!Character.isUpperCase(key.charAt(1))) { key = key.substring(0, 1).toLowerCase() + key.substring(1); } final Object elementObj = method.invoke(bean); //System.out.println("###" + key + ":" + elementObj.toString()); sb.append('\"'); sb.append(key); //? sb.append('\"'); sb.append(':'); sb.append(toJson(elementObj)); //? sb.append(','); } } catch (final Exception e) { //e.getMessage(); throw new RuntimeException("bean?JSON?" + e.getMessage(), e); } } if (sb.length() == 1) { return bean.toString(); } else { sb.setCharAt(sb.length() - 1, '}'); return sb.toString(); } } }