1. 程式人生 > >Json的生成和讀取2(JSONArray+JSONObject)

Json的生成和讀取2(JSONArray+JSONObject)

JSONArray類

 

構造方法

JSONArray()

JSONArray(CollectioncopyFrom)

JSONArray(JSONTokener readFrom)

JSONArray(String json)

JSONArray(Object array)

 

常用方法:

Get

put

opt(不丟擲異常的get)

remove

 

不常用方法:

Length獲取長度

Join設定間隔字元並轉為String

toString轉為String並確定是否格式化(可以設定空格數

)

(關鍵是可以用於格式化)

isnull是否為空

equal判斷是否相等

hashcode轉雜湊值

toJsonObject(JsonArray)與另一個JSONArray一一對應生成一個JSONObject

 

 

JSONObject類

 

構造方法:

JSONObject()

JSONObject(Map copyFrom)

JSONObject(JSONTokener readFrom)

JSONObject(String json)

JSONObject(JSONObject copyFrom, String[] names)

 

常用方法:

Get

put

opt(不丟擲異常的get)

accumulate追加

remove移除

 

不常用方法:

toString轉為String並確定是否格式化(可以設定空格數)

(關鍵是可以用於格式化)

Length獲取長度

isnull是否為空

has(String name)判斷是否有值

 

基本不用:

keys返回迭代器(忘了什麼是迭代器了)

names將names儲存為JsonArray,

numbertostring(不知道)

quote(不知道)(好像已經棄用)

toJsonArray(不知道)

wrap(不知道)

 

 

示例程式碼

            JSONObject root = new JSONObject();//例項一個JSONObject物件
            root.put("cat", "it");//對其新增一個數據

            JSONArray languages = new JSONArray();//例項一個JSON陣列
            JSONObject lan1 = new JSONObject();//例項一個lan1的JSON物件
            lan1.put("id", 1);//對lan1物件新增資料
            lan1.put("ide", "Eclipse");//對lan1物件新增資料
            lan1.put("name", "Java");//對lan1物件新增資料
            JSONObject lan2 = new JSONObject();//例項一個lan2的JSON物件
            lan2.put("id", 2);//對lan2物件新增資料
            lan2.put("ide", "XCode");//對lan2物件新增資料
            lan2.put("name", "Swift");//對lan2物件新增資料
            JSONObject lan3 = new JSONObject();//例項一個lan3的JSON物件
            lan3.put("id", 3);//對lan3物件新增資料
            lan3.put("ide", "Visual Studio");//對lan3物件新增資料
            lan3.put("name", "C#");//對lan3物件新增資料
            languages.put(0, lan1);//將lan1物件新增到JSON陣列中去,角標為0
            languages.put(1, lan2);//將lan2物件新增到JSON陣列中去,角標為1
            languages.put(2, lan3);//將lan3物件新增到JSON陣列中去,角標為2

            root.put("languages", languages);//然後將JSON陣列新增到名為root的JSON物件中去
            System.out.println(root);
            System.out.println(languages);
            System.out.println(lan1);
            System.out.println(lan2);
            System.out.println(lan3);

 

生成的Json資料

{
    "cat": "it",
    "languages": [{
        "id": 1,
        "ide": "Eclipse",
        "name": "Java"
    }, {
        "id": 2,
        "ide": "XCode",
        "name": "Swift"
    }, {
        "id": 3,
        "ide": "Visual Studio",
        "name": "C#"
    }]
}

 

JSONString類

用於拼寫Json

JSONStringer()

array()

endArray()

endObject()

key(String name)

object()

toString()

value

 

 

 

JSONTokener類

這個只是前兩個的助手類,不需要去了解它

(只用到構造方法和nextValue()方法)

JSONObject object =(JSONObject)new JSONTokener(json).nextValue();

 

 

 

___________________________________分割線______________________________________

 

重用度高的和複雜的推薦用Gson

使用次數少和簡單的JsonArray+JsonObject

 

Json的生成和解析(Gson方法)

https://blog.csdn.net/yh18668197127/article/details/85042064