1 public class User { 2 private int id; 3 private String name; 4 public int getId() { 5 return id; 6 } 7 public void setId(int id) { 8 this.id = id; 9 } 10 public String getName() { 11 return name; 12 } 13 public void setName(String name) { 14 this.name = name; 15 } 16 }
1 public class Weibo { 2 private String id; 3 private String city; 4 5 public Weibo(String id, String city) { 6 this.id = id; 7 this.city = city; 8 } 9 10 public Weibo() { 11 } 12 13 public String getId() { 14 return id; 15 } 16 17 public void setId(String id) { 18 this.id = id; 19 } 20 21 public String getCity() { 22 return city; 23 } 24 25 public void setCity(String city) { 26 this.city = city; 27 } 28 }
1 import java.util.ArrayList; 2 import java.util.List; 3 4 public class Group { 5 private int id; 6 private String name; 7 private List<User> list = new ArrayList<User>(); 8 public int getId() { 9 return id; 10 } 11 public void setId(int id) { 12 this.id = id; 13 } 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 public List<User> getList() { 21 return list; 22 } 23 public void setList(List<User> list) { 24 this.list = list; 25 } 26 }
1 import java.util.HashMap; 2 import java.util.List; 3 import java.util.Map; 4 //fastjson-1.2.8.jar 5 import com.alibaba.fastjson.JSON; 6 import com.alibaba.fastjson.JSONArray; 7 import com.alibaba.fastjson.JSONObject; 8 9 //下面是FastJson的简介:常用的方法! 10 // Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。 11 // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 12 // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 13 // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 14 // public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 15 // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 16 // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 17 // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 18 // public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的) 19 20 /** 21 * 这是关于FastJson的一个使用Demo,在Java环境下验证的; 22 * 使用的时候可以参照这个例子进行回忆! 23 * 备注:下面写的Json格式的数据"前面的\,意思是告诉编译器忽略掉它后面的"。 24 * 后面定义有三个类:User、Group、Weibo 25 * @author liuzhao 26 */ 27 public class JsonDemo { 28 29 public static void main(String[] args) { 30 31 json2JsonObjectM1();//将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息 32 json2BeanM2();//将Json文本数据转换为JavaBean数据! 33 json2JSONArrayM3();//将json数据转化为JSONArray: 34 json2JavaBeanM4();//将JSON文本转换为JavaBean的集合;转换为单纯的1个Object:parseObject(String text, Class<T> clazz); 35 bean2JsonM5();//将JavaBean转换为Json格式的数据/Json文本 用户数据的传递:例如上传服务器 36 bean2JSONObjectM6();//将JavaBean转换为JSON对象 37 complexExampleM7();//一个相对复杂的例子: 38 complex2JsonM8();//一个复杂的Object到Json的Demo 39 complexMap2JsonM9();//将Map数据转换为JsonString的Demo;这个对RedBoy服务端不就直接破了嘛! 40 } 41 42 /** 43 * 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息 44 */ 45 private static void json2JsonObjectM1() { 46 //一个JsonObject文本数据 47 String s = "{\"name\":\"liuzhao\"}"; 48 //将JsonObject数据转换为Json 49 JSONObject object = JSON.parseObject(s); 50 //利用键值对的方式获取到值 51 System.out.println("M1-"+object.get("name")); 52 /** 53 * 打印: 54 * liuzhao 55 */ 56 } 57 58 /** 59 * 将Json文本数据转换为JavaBean数据! 60 * 需要注意的是:这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样!键中没有的在这个JavaBean中就显示为null! 61 */ 62 private static void json2BeanM2() { 63 String s = "{\"id\":\"0375\",\"city\":\"平顶山\"}"; 64 //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象! 65 Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义 66 System.out.println("M2-"+weibo.getId()); 67 System.out.println("M2-"+weibo.getCity()); 68 //打印的结果 0375 69 // 平顶山 70 } 71 72 73 /** 74 * 将Map类型的数据转换为JsonString 75 */ 76 private static void complexMap2JsonM9() { 77 Group group = new Group(); 78 group.setId(1); 79 group.setName("group"); 80 81 User user1 = new User(); 82 user1.setId(2); 83 user1.setName("user1"); 84 85 User user2 = new User(); 86 user2.setId(3); 87 user2.setName("user2"); 88 group.getList().add(user1); 89 group.getList().add(user2); 90 91 Map<Integer, Object> map = new HashMap<Integer,Object>(); 92 map.put(1, "No.1"); 93 map.put(2, "No.2"); 94 map.put(3, group.getList()); 95 96 String jsonString = JSON.toJSONString(map); 97 System.out.println("M9-"+jsonString); 98 /** 99 * 输出:{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]} 100 */ 101 } 102 103 /** 104 * 由一个复杂的Object到Json的Demo 105 */ 106 private static void complex2JsonM8() { 107 Group group = new Group(); 108 group.setId(1); 109 group.setName("group"); 110 111 User user1 = new User(); 112 user1.setId(2); 113 user1.setName("user1"); 114 115 User user2 = new User(); 116 user2.setId(3); 117 user2.setName("user2"); 118 group.getList().add(user1); 119 group.getList().add(user2); 120 String jsonString = JSON.toJSONString(group); 121 System.out.println("M8-"+jsonString); 122 /** 123 * 输出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"} 124 */ 125 } 126 127 /** 128 * 一个相对复杂的例子: 129 * JSON文本数据: 130 * 首先是JSONObject,转换为JSONArray; 131 * 然后将JSONArray转换为JavaBean 132 */ 133 private static void complexExampleM7() { 134 String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}" 135 + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"}," 136 + "{id:\"110000\",\"city\":\"#006北#005京市\"}," 137 + "{id:\"110000\",\"city\":\"北#002京市\"}," 138 + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}"; 139 140 JSONObject object = JSON.parseObject(s); 141 Object jsonArray = object.get("js"); 142 System.out.println("M7-"+jsonArray); 143 List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class); 144 for (Weibo weibo : list) { 145 System.out.println("M7-"+weibo.getCity()); 146 } 147 } 148 149 /** 150 * 将JavaBean转换为JSON对象 151 */ 152 private static void bean2JSONObjectM6() { 153 Weibo weibo = new Weibo("0373", "洛阳"); 154 JSONObject json = (JSONObject) JSON.toJSON(weibo); 155 System.out.println("M6-"+json.get("id")); 156 /** 157 * 打印: 158 * 0373 159 */ 160 } 161 162 /** 163 * 将JSON文本转换为JavaBean的集合; 164 * 内部实现肯定是:首先转换为JSONArray,然后再转换为List集合 165 */ 166 private static void json2JavaBeanM4() { 167 String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]"; 168 List<Weibo> list = JSON.parseArray(s, Weibo.class); 169 for (Weibo weibo : list) { 170 System.out.println("M4-"+weibo.getCity()); 171 } 172 /** 173 * 打印: 174 * 平顶山 175 * 南阳 176 */ 177 } 178 179 /** 180 * 将json数据转化为JSONArray: 181 * 注意:获取到JSONArray之后(我们这里只是获取到JSONArray而不是JavaBean的List集合) 182 * 获取JSONArray中的数据转换为String类型需要在外边加""; 183 */ 184 private static void json2JSONArrayM3() { 185 String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]"; 186 //将JSON文本转换为JSONArray 187 JSONArray array = JSON.parseArray(s); 188 //这行必须写:必须加上+"";不然会报出类型强转异常! 189 String str = array.get(1)+""; 190 System.out.println("M3-"+array.get(0)); 191 JSONObject object = JSON.parseObject(str); 192 System.out.println("M3-"+object.get("id")); 193 /** 194 * {"city":"平顶山","id":"0375"} 195 0377 196 */ 197 } 198 199 200 /** 201 * 将JavaBean转换为Json格式的数据/Json文本 202 * 用户数据的传递:例如上传服务器 203 */ 204 private static void bean2JsonM5() { 205 Weibo weibo = new Weibo("123456", "上海"); 206 String string = JSON.toJSONString(weibo); 207 System.out.println("M5-"+string); 208 /** 209 * 打印: 210 * {"city":"上海","id":"123456"} 211 */ 212 } 213 214 }