Java中JSON數據編碼與解碼

JSON和XML真正在進行數據交換時候,它們存在的形式就是一個很長的字符串,這個字符串在網絡 中傳輸或者存儲於磁盤等介質中。在傳輸和存儲之前需要把JSON對象轉換成爲字符串才能傳輸和存 儲,這個過程稱之爲“編碼”過程。接收方需要將接收到的字符串轉換成爲JSON對象,這個過程稱之 爲“解碼”過程。編碼和解碼過程就像發電報時發送方把語言變成能夠傳輸的符號,而接收時要將符號 轉換成爲能夠看懂的語言。

流程圖如下:
在這裏插入圖片描述
介紹一下JSON對象與JSON字符串區別:
JSON對象:

var person={"name":"zhangsan","sex":"男","age":"24"}//json對象
alert(person.name);//zhangsan
alert(typeof person);//object

JSON字符串:

var person='{"name":"zhangsan","sex":"男","age":"24"}';//json字符串
alert(person);//{"name":"zhangsan","sex":"男","age":"24"}
alert(typeof person);//string

由於目前Java官方沒有提供JSON編碼和解碼所需要的類庫,所以需要使用第三方JSON庫。我這裏推薦使用JSON-java庫,你可以去這裏下載,也可以去百度雲下載鏈接https://pan.baidu.com/s/1qCfaI-d9vw-gs_COmjpxkg 密碼:z1ld

下載完成之後,我們需要把報導入到IDEA:
第一步:創建org.json包
在src文件夾中右擊new,選擇Package,然後輸入包名稱org.json。
在這裏插入圖片描述
第二步:複製源代碼文件
將下載好的JSON-java庫裏面的所有文件全部複製到org.json中
在這裏插入圖片描述
在這裏插入圖片描述
下面開始JSON數據解碼與編碼
先看編碼:
如果想獲得如下這樣JSON字符串:

{"a":[1,2,3],"name":"tony","age":30}

實現編碼過程,參考代碼如下:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Arrays;
import java.util.List;

/**
 * @author : 蔡政潔
 * @email :[email protected]
 * @date : 2020/2/20
 * @time : 10:01 下午
 */

//如果想得到JSON字符串{"a":[1,2,3],"name":"tony","age":30},要編碼
public class HelloWorld {
    public static void main(String[] args) {
        try {
            JSONObject object = new JSONObject();
            object.put("name","tony");
            object.put("age",30);
//            第一種加入列表方式
//            List<Integer> integers = Arrays.asList(1,2,3);
//            object.put("a",integers);
//            第二種加入列表方式
            JSONArray jsonArray = new JSONArray();
            jsonArray.put(1).put(3);
            object.put("a",jsonArray);
//            編碼完成
            System.out.println(object.toString());

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

就可以得到上面的運行結果

再看解碼:解碼過程是編碼反向操作,如果有如下JSON字符串

{"a":[1,2,3],"name":"tony","age":30}

JSON字符串解碼成JSON對象或數組,參考代碼如下:

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

/**
 * @author : 蔡政潔
 * @email :[email protected]
 * @date : 2020/2/20
 * @time : 11:17 下午
 */
//解碼過程是編碼的反向操作
public class HelloWorld {
    public static void main(String[] args) {
//       聲明一個json字符串
        String jsonString = "{\"a\":[1,2,3],\"name\":\"tony\",\"age\":30}";
        try {
            JSONObject object = new JSONObject(jsonString);
            System.out.println(object);

            String name = object.getString("name");
            System.out.println("name : "+name);

            int age = object.getInt("age");
            System.out.println("age : "+age);

            JSONArray jsonArray = object.getJSONArray("a");
            int n1 = jsonArray.getInt(0);
            System.out.println("數組a的第一個元素:"+n1);
            int n2 = jsonArray.getInt(1);
            System.out.println("數組a的第二個元素:"+n1);


        }catch (JSONException e){
            e.printStackTrace();
        }
    }
}

運行結果:

{"a":[1,2,3],"name":"tony","age":30}
name : tony
age : 30
數組a的第一個元素:1
數組a的第二個元素:1

以上內容僅供參考學習,如有侵權請聯繫我刪除!
如果這篇文章對您有幫助,左下角的大拇指就是對博主最大的鼓勵。
您的鼓勵就是博主最大的動力!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章