40 lines of java code Map convert to JSON
2015-08-11 20:39
344 查看
public class JsonHelper { private static void appendKeyUnit(StringBuffer sb, String key) { sb.append("\""); sb.append(key); sb.append("\""); } private static void appendValueUnit(StringBuffer sb, Object val) { if (val instanceof Integer) { sb.append(String.valueOf(((Integer)val).intValue())); } else if (val instanceof String) { appendKeyUnit(sb, val.toString()); } else if (val instanceof Map) { String vStr = map2Json((Map<String, Object>)val); sb.append(vStr); } else if (val instanceof List) { sb.append("["); for (Object obj : (List<?>)val) { appendValueUnit(sb, obj); } sb.deleteCharAt(sb.length() - 1); // remove the last comma sb.append("]"); } sb.append(","); } public static String map2Json(Map<String, Object> m) { StringBuffer jsonBuf = new StringBuffer("{"); Set<String> kSet = m.keySet(); for (String k : kSet) { Object v = m.get(k); appendKeyUnit(jsonBuf, k); jsonBuf.append(":"); appendValueUnit(jsonBuf, v); } jsonBuf.deleteCharAt(jsonBuf.length() - 1); // remove the last comma jsonBuf.append("}"); return jsonBuf.toString(); } }
The key of the Map must be a String. However, the value could be an Integer, a String, a Map or a List. The generic type of the List couldcountry be one of the four value type. The test code is as follows, but the content doesn't make any sense.
class JsonHelperTest { public static void main(String[] args) { Map<String, Object> map = new HashMap<String, Object>(); map.put("name", "TaylorSwift"); Map<String, Object> submap = new HashMap<String, Object>(); submap.put("genre", "country music"); submap.put("age", 22); map.put("career", submap); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); submap = new HashMap<String, Object>(); submap.put("career", "engineer"); list.add(submap); submap = new HashMap<String, Object>(); submap.put("career", "music"); list.add(submap); map.put("subcareer", submap); map.put("company", list); String json = JsonHelper.map2Json(map); System.out.println(json); } }The output is: {"subcareer":{"career":"music"},"company":[{"career":"engineer"},{"career":"music"}],"name":"TaylorSwift","career":{"genre":"country music","age":22}}
相关文章推荐
- Java 流
- 开始使用 Spring Data JPA
- java 后台线层也叫守护线层
- [置顶] 100 High-Quality Java Developers’ Blogs
- 深入 理解 Statement 和 PreparedStatement
- JavaWeb学习总结——文件上传和下载
- JAVA学习1_JAR文件包及jar命令详解
- JAVA基础一大堆0811数据库
- 201301 JAVA题目0-1级
- 《开源公开课分享》:Java开源框架案例视频分享
- 《开源公开课分享》:Java开源框架案例分享
- Java多态性理解
- spring属性的注入实例
- 【KMP】hdu1867(A + B for you again) 杭电java a题真坑
- Java用模板生成word
- Java 多线程实现的两种方式
- Java InputStreamReader和OutputStreamWriter
- java :动态代理
- Java类的第四个成员:代码块(或称初始化块)
- Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)