工作中,需要處理與另一方系統數據交換的問題,採用的是調用遠程介面的方法,數據格式選擇的是json,今天就來聊一聊json,主要分析json數據和java Bean之間的轉換問題。 一、json是什麼 json,全稱是JavaScript Object Notation,中文翻譯是JS對象標記語言,是 ...
工作中,需要處理與另一方系統數據交換的問題,採用的是調用遠程介面的方法,數據格式選擇的是json,今天就來聊一聊json,主要分析json數據和java Bean之間的轉換問題。
一、json是什麼
json,全稱是JavaScript Object Notation,中文翻譯是JS對象標記語言,是一種輕量級的數據交換格式,易於開發人員編寫和閱讀,也易於機器進行生成和解析。
二、json數據結構
1、可以存儲對象(Object),使用花括弧 { } 包含的鍵值對結構,key必須是string類型,value為任何基本類型或數據結構。
2、可以存儲數組(Array),使用中括弧 [ ] 來起始,並用逗號 , 來分割元素。
3、可以存儲String類型、number類型(整型、浮點型)、Boolean類型(true、false)和null(使用null時可以先定義一個Object為null)。
三、語法
1、普通鍵值對。
{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}
2、存儲對象。
{"person":{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}}
3、存儲數組。
{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false,"interest":["coding","reading"]}
4、對象加數組複合。
{"person":[{"name":"小川94_2號"},{"name":"小川94_3號"}]}
四、準備工作
1、開發系統:win7 64位。
2、開發環境:jdk1.8。
3、開發語言:java。
4、開發工具:eclipse。
5、fastjson的jar包:我使用的是maven的pom.xml文件配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency>
五、使用阿裡的 fastjson 工具包對json進行實際操作
1、將json字元串轉為json對象。
1 /** 2 * 將json字元串轉為json對象 3 * @param jsonStr json字元串 4 * @return 5 */ 6 public static JSONObject changeStringToJson(String jsonStr){ 7 JSONObject jo = JSON.parseObject(jsonStr); 8 return jo; 9 }
2、將json字元串數組轉為json數組對象。
1 /** 2 * 將json字元串數組轉為json數組對象 3 * @param jsonStr json字元串 4 * @return 5 */ 6 public static JSONArray changeStringToArray(String jsonStr){ 7 JSONObject jo = JSON.parseObject(jsonStr); 8 if( !jo.containsKey("person") ){ 9 return null; 10 } 11 String strArray = jo.getString("person"); 12 JSONArray ja = JSONArray.parseArray(strArray); 13 return ja; 14 }
3、將json字元串轉為java Bean對象。
1 /** 2 * 將json字元串轉為java Bean對象 3 * @param jsonStr json字元串 4 * @return 5 */ 6 public static Person changeJsonToBean(String jsonStr){ 7 Person person = JSON.parseObject(jsonStr, Person.class); 8 return person; 9 }
4、將java Bean對象轉為json對象。
1 /** 2 * 將java Bean對象轉為json對象 3 * @param person java Bean對象 4 * @return 5 */ 6 public static JSONObject changeBeanToJson(Person person){ 7 JSONObject jo = (JSONObject)JSON.toJSON(person); 8 return jo; 9 }
5、將json字元串轉為Map。
1 /** 2 * 將json字元串轉為Map 3 * @param jsonStr json字元串 4 * @return 5 */ 6 public static Map<String,Object> changeJsonToMap(String jsonStr){ 7 Map<String,Object> map = new HashMap<String,Object>(); 8 JSONObject jo = JSON.parseObject(jsonStr); 9 for(String str : jo.keySet()){ 10 map.put(str, jo.get(str)); 11 } 12 return map; 13 }
6、編寫測試類。
protected long startTime; protected long endTime; public static final String JSON_TO_BEAN = "{" + "'name':'小川94'," + "'age':18," + "'gender':'boy'," + "'hasGirlFriend':false," + "'interest':'coding'" + "}"; public static String str = "{\"person\":{" + "\"name\":\"小川94\",\"age\":18,\"gender\":\"boy\"," + "\"hasGirlFriend\":false,\"interest\":\"coding\"}}"; public static String strArray = "{\"person\":[" + "{\"name\":\"小川94_2號\"},{\"name\":\"小川94_3號\"}]}"; @Before public void setUp() throws Exception { this.startTime= System.currentTimeMillis(); System.out.println("=========開始測試==========="); } @After public void tearDown() throws Exception { this.endTime = System.currentTimeMillis(); System.out.println("測試用時:"+(endTime-startTime)); System.out.println("=========測試結束==========="); } @Test public void testChangePersonToBean(){ Person person = JsonUtils.changeJsonToBean(JSON_TO_BEAN); System.out.println(person); System.out.println("姓名:"+person.getName()); System.out.println("年齡:"+person.getAge()); System.out.println("性別:"+person.getGender()); } @Test public void testChangeBeanToJson(){ Person person = new Person(); person.setName("小川94"); person.setAge(18); person.setGender("boy"); person.setHasGirlFriend(false); person.setInterest("coding"); JSONObject jo = JsonUtils.changeBeanToJson(person); System.out.println(jo); } @Test public void testChageJsonToMap(){ Map<String,Object> map = JsonUtils.changeJsonToMap(JSON_TO_BEAN); System.out.println(map); } @Test public void testChangeStringToJson(){ JSONObject jo = JsonUtils.changeStringToJson(str); System.out.println(jo); } @Test public void testChangeStringToArray(){ JSONArray ja = JsonUtils.changeStringToArray(strArray); System.out.println(ja); System.out.println(ja.get(0)); }
7、運行結果:上面五個測試用例都可以正常編譯、運行,這裡就不一一截圖說明瞭。
文章首發於我的個人公眾號:悅樂書。喜歡分享一路上聽過的歌,看過的電影,讀過的書,敲過的代碼,深夜的沉思。期待你的關註!本博文為本人原創,轉載請註明出處!