- com.alibaba.fastjson.JSONObject
- net.sf.json.JSONObject
- org.json.JSONObject
java對象和json數據之間的轉換方式一般有兩種,一種是引用第三方的jar包,如Gson(谷歌)、Fastjson(阿里)、Jackson等,這種方式優點是語法精練,可以實現一句話轉化,但缺點是會引入龐大的第三方庫。
第二種是直接使用Java自帶的org.json解析,但這個庫功能比較基礎,解析會寫很多重復的代碼。
一 、com.alibaba.fastjson.JSONObject的使用
1 POM.xml
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.51</version> </dependency>
2 Json字符串與Map、List、object之間的相互轉換
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestFastJson { public static void main(String[] args){ json2JsonObject();//將Json字符串轉換為JSONObject對象 json2JavaBean();//將Json字符串轉換為JavaBean對象 json2JsonArray();//將Json字符串轉換為JSONArray對象 json2JavaBeanList();//將Json字符串轉換為JavaBean的集合 javaBean2Json();//將JavaBean轉換為Json格式的數據 javaBean2JsonObject();//將JavaBean轉換為JSONObject對象 json2ListInMap();//從Json字符串的Map中獲取List對象 list2JsonInMap();//將含list的Map對象轉換為Json字符串 stringToMap();//json字符串轉map mapToString();//map轉json字符串 mapToJsonObject();//map轉json對象 testList2String();//list轉json字符串 } private static void json2JsonObject() { String s = "{\"name\":\"peter\"}"; JSONObject object = JSON.parseObject(s); System.out.println(object.get("name")); } private static void json2JavaBean() { String s = "{\"id\":\"17051801\",\"name\":\"lucy\"}"; User user = JSON.parseObject(s, User.class); System.out.println(user.getId()); System.out.println(user.getName()); } private static void json2JsonArray() { String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]"; JSONArray array = JSON.parseArray(s); for (int i = 0; i < array.size(); i++) { //JSONArray中的數據轉換為String類型需要在外邊加"";不然會報出類型強轉異常! String str = array.get(i)+""; JSONObject object = JSON.parseObject(str); System.out.println(object.get("name")); } } private static void json2JavaBeanList() { String s = "[{\"id\":\"17051801\",\"name\":\"lucy\"},{\"id\":\"17051802\",\"name\":\"peter\"}]"; List<User> list = JSON.parseArray(s, User.class); for (User user : list) { System.out.println(user.getName()); } } private static void javaBean2Json() { User user = new User("17051801", "lucy"); String string = JSON.toJSONString(user); System.out.println(string); } private static void javaBean2JsonObject() { User user = new User("17051801", "lucy"); JSONObject json = (JSONObject) JSON.toJSON(user); System.out.println(json.get("id")); } private static void json2ListInMap() { String s = "{json:[{id:\"17051801\",\"name\":\"lucy\"},{id:\"17051802\",\"name\":\"peter\"}," + "{id:\"17051803\",\"name\":\"tom\"},{id:\"17051804\",\"name\":\"lily\"}]}"; //將Json字符串轉換為JSONObject對象,並取出list對象的值 JSONObject object = JSON.parseObject(s); Object objArray = object.get("json"); String str = objArray+""; //方式1:轉換成JSONArray對象形式 JSONArray array = JSON.parseArray(str); for (int i = 0; i < array.size(); i++) { JSONObject obj = JSON.parseObject(array.get(i)+""); System.out.println(obj.get("name")); } //方式2:轉換成List<JavaBean>形式 List<User> list = JSON.parseArray(str, User.class); for (User user : list) { System.out.println(user.getName()); } } private static void list2JsonInMap() { //方式1:構建一個帶有list的JavaBean對象 School school = new School(); school.setId("1"); school.setName("schoolA"); User user1 = new User(); user1.setId("17051801"); user1.setName("lucy"); User user2 = new User(); user2.setId("17051802"); user2.setName("peter"); school.getStudents().add(user1); school.getStudents().add(user2); //將JavaBean對象轉換成Json字符串 String string1 = JSON.toJSONString(school); System.out.println(string1); //方式2:構建一個帶有list的Map對象 Map<String, Object> map1 = new HashMap<String,Object>(); map1.put("id", "17051801"); map1.put("name", "lucy"); Map<String, Object> map2 = new HashMap<String,Object>(); map2.put("id", "17051802"); map2.put("name", "peter"); List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); list.add(map1); list.add(map2); Map<String, Object> map = new HashMap<String,Object>(); map.put("id", "1"); map.put("name", "schoolA"); map.put("students", list); //將map對象轉換成Json字符串 String string2 = JSON.toJSONString(map); System.out.println(string2); } private static void stringToMap(){ String str = "{\"age\":\"24\",\"name\":\"cool_summer_moon\"}"; JSONObject jsonObject = JSONObject.parseObject(str); //json對象轉Map Map<String,Object> map = (Map<String,Object>)jsonObject; System.out.println("map對象是:" + map); Object object = map.get("age"); System.out.println("age的值是"+object); } private static void mapToString(){ Map<String,Object> map = new HashMap<>(); map.put("age", 24); map.put("name", "cool_summer_moon"); String jsonString = JSON.toJSONString(map); System.out.println("json字符串是:"+jsonString); } private static void mapToJsonObject(){ Map<String,Object> map = new HashMap<>(); map.put("age", 24); map.put("name", "cool_summer_moon"); JSONObject json = new JSONObject(map); System.out.println("Json對象是:" + json); } /** * 測試包裝類型的List轉換為json字符串 */ public static void testList2String() { List<Long> longs = new ArrayList<Long>(); longs.add(1L); longs.add(2L); longs.add(3L); String actual = JSON.toJSONString(longs); Assert.assertEquals("[1,2,3]", actual); } }
二 、org.json.JSONObject的使用
1.引入org.json依賴
<dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20160810</version> </dependency>
3.JSONObject轉javaBean
public static void main(String[] args) { String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}"; Student stu = null; List<Student> list = null; try { ObjectMapper objectMapper=new ObjectMapper(); StudentList studentList=objectMapper.readValue(str, StudentList.class); list=studentList.getStudent(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } for(Student s:list){ System.out.println(s.getName()); } }
ObjectMapper objectMapper=new ObjectMapper(); out = objectMapper.readValue(org.json.JSONObject.valueToString(arg0), OutputObject.class);
三 net.sf.json.JSONObject的使用
1 引入maven依賴
最后一行需要保留,有兩個jdk版本的實現:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency>
使用范例
package json; import net.sf.json.JSON; import net.sf.json.JSONObject; import net.sf.json.xml.XMLSerializer; public class JSONObject_1_3 { public static void javaToJSON() { System.out.println("java代碼封裝為json字符串"); JSONObject jsonObj = new JSONObject(); jsonObj.put("username", "張三"); jsonObj.put("password", "123456"); System.out.println("java--->json \n" + jsonObj.toString()); } public static void jsonToJAVA() { System.out.println("json字符串轉java代碼"); String jsonStr = "{\"password\":\"123456\",\"username\":\"張三\"}"; JSONObject jsonObj = JSONObject.fromString(jsonStr); String username = jsonObj.getString("username"); String password = jsonObj.optString("password"); System.out.println("json--->java\n username=" + username + "\t password=" + password); } public static void jsonToXML() { System.out.println("json字符串轉xml字符串"); String jsonStr = "{\"password\":\"123456\",\"username\":\"張三\"}"; JSONObject json = JSONObject.fromString(jsonStr); XMLSerializer xmlSerializer = new XMLSerializer(); xmlSerializer.setRootName("user_info"); xmlSerializer.setTypeHintsEnabled(false); String xml = xmlSerializer.write(json); System.out.println("json--->xml \n" + xml); } public static void javaBeanToJSON() { System.out.println("javabean轉json字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("張三"); userInfo.setPassword("123456"); JSONObject json = JSONObject.fromBean(userInfo); System.out.println("javabean--->json \n" + json.toString()); } public static void javaBeanToXML() { System.out.println("javabean轉xml字符串"); UserInfo userInfo = new UserInfo(); userInfo.setUsername("張三"); userInfo.setPassword("123456"); JSONObject json = JSONObject.fromBean(userInfo); XMLSerializer xmlSerializer = new XMLSerializer(); String xml = xmlSerializer.write(json, "UTF-8"); System.out.println("javabean--->xml \n" + xml); } public static void xmlToJSON(){ System.out.println("xml字符串轉json字符串"); String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><user_info><password>123456</password><username>張三</username></user_info>"; JSON json=XMLSerializer.read(xml); System.out.println("xml--->json \n"+json.toString()); } public static void main(String args[]) { javaToJSON(); jsonToJAVA(); jsonToXML(); javaBeanToJSON(); javaBeanToXML(); xmlToJSON(); } }
轉自:https://blog.csdn.net/zhengTornado/article/details/102832587