博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java对象转json格式
阅读量:6258 次
发布时间:2019-06-22

本文共 3938 字,大约阅读时间需要 13 分钟。

1 package com;  2   3 import java.util.ArrayList;  4 import java.util.HashMap;  5 import java.util.List;  6 import java.util.Map;  7 import java.util.Set;  8   9 import org.junit.Test; 10  11 public class TestJson { 12      13     static String string2Json(String s) { 14         StringBuilder sb = new StringBuilder(s.length() + 20); 15         sb.append('\"'); 16         for (int i = 0; i < s.length(); i++) { 17             char c = s.charAt(i); 18             switch (c) { 19             case '\"': 20                 sb.append("\\\""); 21                 break; 22             case '\\': 23                 sb.append("\\\\"); 24                 break; 25             case '/': 26                 sb.append("\\/"); 27                 break; 28             case '\b': 29                 sb.append("\\b"); 30                 break; 31             case '\f': 32                 sb.append("\\f"); 33                 break; 34             case '\n': 35                 sb.append("\\n"); 36                 break; 37             case '\r': 38                 sb.append("\\r"); 39                 break; 40             case '\t': 41                 sb.append("\\t"); 42                 break; 43             default: 44                 sb.append(c); 45             } 46         } 47         sb.append('\"'); 48         return sb.toString(); 49     } 50  51     static String number2Json(Number number) { 52         return number.toString(); 53     } 54  55     static String boolean2Json(Boolean bool) { 56         return bool.toString(); 57     } 58  59     static String array2Json(Object[] array) { 60         if (array.length == 0) 61             return "[]"; 62         StringBuilder sb = new StringBuilder(array.length << 4); 63         sb.append('['); 64         for (Object o : array) { 65             sb.append(toJson(o)); 66             sb.append(','); 67         } 68         // 将最后添加的 ',' 变为 ']': 69         sb.setCharAt(sb.length() - 1, ']'); 70         return sb.toString(); 71     } 72  73     static String map2Json(Map
map) { 74 if (map.isEmpty()) 75 return "{}"; 76 StringBuilder sb = new StringBuilder(map.size() << 4); 77 sb.append('{'); 78 Set
keys = map.keySet(); 79 for (String key : keys) { 80 Object value = map.get(key); 81 sb.append('\"'); 82 sb.append(key); 83 sb.append('\"'); 84 sb.append(':'); 85 sb.append(toJson(value)); 86 sb.append(','); 87 } 88 // 将最后的 ',' 变为 '}': 89 sb.setCharAt(sb.length() - 1, '}'); 90 return sb.toString(); 91 } 92 93 public static String toJson(Object o) { 94 if (o == null) 95 return "null"; 96 if (o instanceof String) 97 return string2Json((String) o); 98 if (o instanceof Boolean) 99 return boolean2Json((Boolean) o);100 if (o instanceof Number)101 return number2Json((Number) o);102 if (o instanceof Map)103 return map2Json((Map
) o);104 if (o instanceof Object[])105 return array2Json((Object[]) o);106 throw new RuntimeException("Unsupported type: "107 + o.getClass().getName());108 }109 110 @Test(expected = StackOverflowError.class)111 public void testRecurrsiveMap2Json() {112 Map
map = new HashMap
();113 map.put("key", "value");114 map.put("key2", 2);115 List
array = new ArrayList
();116 array.add(1); 117 array.add(2);118 map.put("array", array);119 String json = TestJson.toJson(map);120 System.out.println(json);121 }122 }

参考文献:

http://www.ibm.com/developerworks/cn/web/wa-lo-json/

http://www.w3school.com.cn/json/index.asp

转载于:https://www.cnblogs.com/gaoyanqing/p/4803614.html

你可能感兴趣的文章
异常处理汇总 ~ 修正果带着你的Code飞奔吧!
查看>>
BFS --- 素数环
查看>>
PCIE_DMA:xapp1052学习笔记
查看>>
python ----字符串基础练习题30道
查看>>
uva-10879-因数分解
查看>>
python 调用aiohttp
查看>>
Spring Boot中使用MyBatis注解配置详解
查看>>
linux下文件的一些文件颜色的含义
查看>>
跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
查看>>
如何花更少的时间学习更多的知识
查看>>
学习鸟哥的Linux私房菜笔记(8)——文件查找与文件管理2
查看>>
升级fedora 18到fedora 19
查看>>
【代码小记】无
查看>>
11月20日学习内容整理:jquery插件
查看>>
Redis客户端集群
查看>>
javascript基础篇:函数
查看>>
SVN与TortoiseSVN实战:补丁详解
查看>>
java一些面试题
查看>>
干货型up主
查看>>
获取页面中所有dropdownlist类型控件
查看>>