json小結和fastjson包的實際json操作


工作中,需要處理與另一方系統數據交換的問題,采用的是調用遠程接口的方法,數據格式選擇的是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、運行結果:上面五個測試用例都可以正常編譯、運行,這里就不一一截圖說明了。

 

文章首發於我的個人公眾號:悅樂書。喜歡分享一路上聽過的歌,看過的電影,讀過的書,敲過的代碼,深夜的沉思。期待你的關注!本博文為本人原創,轉載請注明出處!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM