示例:
1import java.util.ArrayList; 2import java.util.List; 3import java.util.HashMap; 4import java.util.Map; 5 6import com.alibaba.fastjson.JSON; 7import com.alibaba.fastjson.JSONArray; 8import com.alibaba.fastjson.JSONObject; 9 10class User{ 11 private int id; 12 private String name; 13 public int getId() { 14 return id; 15 } 16 public void setId(int id) { 17 this.id = id; 18 } 19 public String getName() { 20 return name; 21 } 22 public void setName(String name) { 23 this.name = name; 24 } 25} 26 27class Group{ 28 private int id; 29 private String name; 30 private List<User> list = new ArrayList<User>(); 31 public int getId() { 32 return id; 33 } 34 public void setId(int id) { 35 this.id = id; 36 } 37 public String getName() { 38 return name; 39 } 40 public void setName(String name) { 41 this.name = name; 42 } 43 public List<User> getList() { 44 return list; 45 } 46 public void setList(List<User> list) { 47 this.list = list; 48 } 49} 50 51class Weibo { 52 private String id; 53 private String city; 54 55 public Weibo(String id, String city) { 56 this.id = id; 57 this.city = city; 58 } 59 60 public Weibo() { 61 } 62 63 public String getId() { 64 return id; 65 } 66 67 public void setId(String id) { 68 this.id = id; 69 } 70 71 public String getCity() { 72 return city; 73 } 74 75 public void setCity(String city) { 76 this.city = city; 77 } 78} 79 80public class JsonDemo { 81 public static void main(String[] args) { 82 json2JsonObjectM1();//将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息 83 json2BeanM2(); //将Json文本数据转换为JavaBean数据! 84 json2JSONArrayM3(); //将json数据转化为JSONArray: 85 json2JavaBeanM4(); //将JSON文本转换为JavaBean的集合;转换为单纯的1个Object:parseObject(String text, Class<T> clazz); 86 bean2JsonM5(); //将JavaBean转换为Json格式的数据/Json文本 用户数据的传递:例如上传服务器 87 bean2JSONObjectM6();//将JavaBean转换为JSON对象 88 complexExampleM7(); //一个相对复杂的例子: 89 complex2JsonM8(); //一个复杂的Object到Json的Demo 90 complexMap2JsonM9();//将Map数据转换为JsonString的Demo;这个对RedBoy服务端不就直接破了嘛! 91 } 92 93 /** 94 * 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息 95 */ 96 private static void json2JsonObjectM1() { 97 //一个JsonObject文本数据 98 String s = "{\"name\":\"liuzhao\"}"; 99 //将JsonObject数据转换为Json 100 JSONObject object = JSON.parseObject(s); 101 //利用键值对的方式获取到值 102 System.out.println(object.get("name")); 103 /** 104 * 打印: 105 * liuzhao 106 */ 107 } 108 109 /** 110 * 将Json文本数据转换为JavaBean数据! 111 * 需要注意的是:这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样!键中没有的在这个JavaBean中就显示为null! 112 */ 113 private static void json2BeanM2() { 114 String s = "{\"id\":\"0375\",\"city\":\"平顶山\"}"; 115 //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象! 116 Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义 117 System.out.println(weibo.getId()); 118 System.out.println(weibo.getCity()); 119 //打印的结果 0375 120 // 平顶山 121 } 122 123 124 /** 125 * 将Map类型的数据转换为JsonString 126 */ 127 private static void complexMap2JsonM9() { 128 Group group = new Group(); 129 group.setId(1); 130 group.setName("group"); 131 132 User user1 = new User(); 133 user1.setId(2); 134 user1.setName("user1"); 135 136 User user2 = new User(); 137 user2.setId(3); 138 user2.setName("user2"); 139 group.getList().add(user1); 140 group.getList().add(user2); 141 142 Map<Integer, Object> map = new HashMap<Integer,Object>(); 143 map.put(1, "No.1"); 144 map.put(2, "No.2"); 145 map.put(3, group.getList()); 146 147 String jsonString = JSON.toJSONString(map); 148 System.out.println(jsonString); 149 /** 150 * 输出:{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]} 151 */ 152 } 153 154 /** 155 * 由一个复杂的Object到Json的Demo 156 */ 157 private static void complex2JsonM8() { 158 Group group = new Group(); 159 group.setId(1); 160 group.setName("group"); 161 162 User user1 = new User(); 163 user1.setId(2); 164 user1.setName("user1"); 165 166 User user2 = new User(); 167 user2.setId(3); 168 user2.setName("user2"); 169 group.getList().add(user1); 170 group.getList().add(user2); 171 String jsonString = JSON.toJSONString(group); 172 System.out.println(jsonString); 173 /** 174 * 输出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"} 175 */ 176 } 177 178 /** 179 * 一个相对复杂的例子: 180 * JSON文本数据: 181 * 首先是JSONObject,转换为JSONArray; 182 * 然后将JSONArray转换为JavaBean 183 */ 184 private static void complexExampleM7() { 185 String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}" 186 + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"}," 187 + "{id:\"110000\",\"city\":\"#006北#005京市\"}," 188 + "{id:\"110000\",\"city\":\"北#002京市\"}," 189 + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}"; 190 191 JSONObject object = JSON.parseObject(s); 192 Object jsonArray = object.get("js"); 193 System.out.println(jsonArray); 194 List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class); 195 for (Weibo weibo : list) { 196 System.out.println(weibo.getCity()); 197 } 198 } 199 200 /** 201 * 将JavaBean转换为JSON对象 202 */ 203 private static void bean2JSONObjectM6() { 204 Weibo weibo = new Weibo("0373", "洛阳"); 205 JSONObject json = (JSONObject) JSON.toJSON(weibo); 206 System.out.println(json.get("id")); 207 /** 208 * 打印: 209 * 0373 210 */ 211 } 212 213 /** 214 * 将JSON文本转换为JavaBean的集合; 215 * 内部实现肯定是:首先转换为JSONArray,然后再转换为List集合 216 */ 217 private static void json2JavaBeanM4() { 218 String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]"; 219 List<Weibo> list = JSON.parseArray(s, Weibo.class); 220 for (Weibo weibo : list) { 221 System.out.println(weibo.getCity()); 222 } 223 /** 224 * 打印: 225 * 平顶山 226 * 南阳 227 */ 228 } 229 230 /** 231 * 将json数据转化为JSONArray: 232 * 注意:获取到JSONArray之后(我们这里只是获取到JSONArray而不是JavaBean的List集合) 233 * 获取JSONArray中的数据转换为String类型需要在外边加""; 234 */ 235 private static void json2JSONArrayM3() { 236 String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]"; 237 //将JSON文本转换为JSONArray 238 JSONArray array = JSON.parseArray(s); 239 //这行必须写:必须加上+"";不然会报出类型强转异常! 240 String str = array.get(1)+""; 241 System.out.println(array.get(0)); 242 JSONObject object = JSON.parseObject(str); 243 System.out.println(object.get("id")); 244 /** 245 * {"city":"平顶山","id":"0375"} 246 */ 247 } 248 249 250 /** 251 * 将JavaBean转换为Json格式的数据/Json文本 252 * 用户数据的传递:例如上传服务器 253 */ 254 private static void bean2JsonM5() { 255 Weibo weibo = new Weibo("123456", "上海"); 256 String string = JSON.toJSONString(weibo); 257 System.out.println(string); 258 /** 259 * 打印: 260 * {"city":"上海","id":"123456"} 261 */ 262 } 263 264}