public class JsonTest { public static void main(String[] args) throws IOException, Exception { /* * 1.將指定的 JavaBean對象解析成Json字符串 */ Person p1 = new Person("zhangsan", 22, 1332117); System.out.println(JSON.toJSONString(p1)); // 字段的get屬性 /* * 2.將封裝了javaBean對象的集合解析成json字符串,並對該數據進行過濾 */ ValueFilter valueFilter = new ValueFilter() { @Override public Object process(Object source, String name, Object value) { if (value.equals("lisi")) { return "**敏感詞彙**"; } return value; } }; List<Person> list = new ArrayList<Person>(); list.add(new Person("lisi", 19, 159785)); list.add(new Person("wangwu", 10, 113123213)); list.add(new Person("zhaoliu", 29, 1444785)); System.out.println(JSON.toJSONString(list, valueFilter)); /* * 3.將List<Map<String, Person>>集合 轉換爲json字符串 */ List<Map<String, Person>> list2 = new ArrayList<Map<String, Person>>(); Map<String, Person> map1 = new HashMap<String, Person>(); map1.put("001", new Person("wangwu", 19, 159785)); map1.put("002", new Person("lisi", 19, 159785)); map1.put("003", new Person("lisi", 19, 159785)); Map<String, Person> map2 = new HashMap<String, Person>(); map2.put("001", new Person("zhaoliu", 19, 159785)); map2.put("002", new Person("lisi", 19, 159785)); map2.put("003", new Person("lisi", 19, 159785)); list2.add(map1); list2.add(map2); System.out.println(JSON.toJSONString(list2)); /* * 4.將指定的字符串解析成 指定的javaBean對象(使用泛型) */ Person p2 = JSON.parseObject(Person.getUtil(1), Person.class); // 字段的set屬性 /* * 5.將指定的字符串解析成 封裝了指定javaBean對象的集合 */ // 方法一: List<Person> list1 = JSON.parseArray(Person.getUtil(2), Person.class); // 方法二: List<Person> list4 = JSON.parseObject(Person.getUtil(2), new TypeReference<List<Person>>(){}); /* * 6.將json字符串 解析成 List<Map<String, Person>>集合 ,注意Type類型的定義 */ // 關鍵type類型 List<Map<String, Person>> list3 = JSON.parseObject(Person.getUtil(3),new TypeReference<List<Map<String, Person>>>(){}); /* * 7.將json字符串解析爲 JsonObject對象, 因爲該對象繼承了map,能夠獲得鍵值對 */ JSONObject object = (JSONObject) JSON.parse(Person.getUtil(1)); System.out.println("name:" + object.getString("name")); System.out.println("age:" + object.getIntValue("age")); System.out.println("number:" + object.getIntValue("number")); /* * 8.name過濾器,只能對name進行更新,無論是否顯示 */ NameFilter filter = new NameFilter() { @Override public String process(Object source, String name, Object value) { // source是當前對象, name是key, value實在值 if ("age".equals(name)) { return "AGE"; } return name; // {"age":22,"name":"zhangsan","number":1332117} //過濾前 // {"AGE":22,"name":"zhangsan","number":1332117} //過濾後 } }; JSONSerializer jsonSerializer = new JSONSerializer(); jsonSerializer.getNameFilters().add(filter); // 經過增長一個過濾器,爲name和值進行過濾 jsonSerializer.write(p1); System.out.println(jsonSerializer.toString()); /* * 9.屬性過濾器PropertyFilter,知足要求的能夠不作顯示 */ PropertyFilter propertyFilter = new PropertyFilter() { @Override public boolean apply(Object source, String name, Object value) { if ("age".equals(name)) { return true; } return false; } }; JSONSerializer jsonSerializer2 = new JSONSerializer(); jsonSerializer2.getPropertyFilters().add(propertyFilter); jsonSerializer2.write(list); System.out.println(jsonSerializer2.toString()); /* * 10.值過濾器ValueFilter,對知足要求的能夠不作顯示 */ ValueFilter valueFilter2 = new ValueFilter() { @Override public Object process(Object source, String name, Object value) { if (value.equals(10)) { return null; } return value; } }; JSONSerializer jsonSerializer3 = new JSONSerializer(); jsonSerializer3.getValueFilters().add(valueFilter2); jsonSerializer3.write(list); System.out.println(jsonSerializer3.toString()); /* * 11.在本地路徑下讀取文件的json字符串信息,獲得數據並賦值javaBean對象 */ JSONReader reader = new JSONReader(new FileReader("c:\\1.txt")); // 注意type的使用 List<Person> list10 = reader.readObject(new TypeReference<List<Person>>() {}.getType()); reader.close(); /* * 12.將Object對象保存至本地路徑中,保存爲json字符串 */ JSONWriter writer = new JSONWriter(new FileWriter("c:\\2.txt")); writer.writeObject(list10); writer.close(); /* * 13.在網絡上獲取json數據,並保存爲對應的javaBean對象信息 */ List<Person> list11 = null; URL url = new URL("http://192.168.117.114:8080/Test/My"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.setConnectTimeout(3000); if (conn.getResponseCode() == 200) { InputStream in = conn.getInputStream(); // 經過JsonReader類獲得發出的輸出流對象 JSONReader reader2 = new JSONReader(new InputStreamReader(in)); // 獲得Object對象 list11 = reader2.readObject(new TypeReference<List<Person>>(){}.getType()); } for (Person p : list11) { System.out.println(p); } /* * 14.將客戶端的javaBean對象,上傳至服務器 */ byte[] bytes = JSON.toJSONBytes(list11); URL url2 = new URL("http://192.168.117.114:8080/Test/My"); HttpURLConnection conn2 = (HttpURLConnection) url2.openConnection(); conn2.setRequestMethod("POST"); conn2.setConnectTimeout(3000); conn2.setRequestProperty("content-length", String.valueOf(bytes.length)); conn2.setRequestProperty("content-type","application/x-www-form-urlencoded"); conn2.setDoOutput(true); OutputStream os = conn2.getOutputStream(); os.write(bytes, 0, bytes.length); os.close(); if (conn2.getResponseCode() == 200) { System.out.println("上傳成功! "); } } //////////////////////22222222 // SerialFeature 字段詳細用法 } class Person { public static String getUtil(int type) { switch (type) { case 1: return new String( "{\"ag\te\":22,\"name\":\"zhangsan\",\"number\":1332117}"); case 2: return new String( "[{\"age\":19,\"name\":\"lisi\",\"number\":159785}," + "{\"age\":10,\"name\":\"wangwu\",\"number\":113123213}," + "{\"age\":29,\"name\":\"zhaoliu\",\"number\":1444785}]"); case 3: return new String( "[{\"001\":{\"age\":19,\"name\":\"lisi\",\"number\":159785}," + "\"002\":{\"age\":19,\"name\":\"wangwu\",\"number\":159785}," + "\"003\":{\"age\":19,\"name\":\"lisi\",\"number\":159785}}," + "{\"001\":{\"age\":23,\"name\":\"lisi\",\"number\":159785}," + "\"002\":{\"age\":19,\"name\":\"lisi\",\"number\":159785}," + "\"003\":{\"age\":19,\"name\":\"lisi\",\"number\":159785}}]"); } return null; } private String name; private int age; private int number; public Person() { super(); } public Person(String name, int age, int number) { super(); this.name = name; this.age = age; this.number = number; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getNumber() { return number; } public void setNumber(int number) { this.number = number; } @Override public String toString() { return "Person [age=" + age + ", name=" + name + ", number=" + number + "]"; } }