1. 程式人生 > 其它 >Java讀取Json資料

Java讀取Json資料

1.JSON介紹

  JSON比XML簡單,主要體現在傳輸相同資訊的情況下,檔案的大小不同。
  JSON只用於傳輸資訊,XML還可以用於配置檔案的使用。
  JSON中的符號主要有: " , [ {:

2.JSON中的陣列和物件

1.陣列(JSONArray)
  陣列用一對[],表示存放的是一般的陣列資料。
  如:["11","22","33"],表示這是一個JSONArray陣列,裡面有3個數據:”11“,”22“,”33“。當然可以是複雜的資料,就是所謂的巢狀定義吧。
2.物件(JSONObject)
  物件用一對{},來表示其中JSON通用的”鍵-值“對。
  如:{"sex":"female","name":"zhangsan"},表示的是一個JSON物件,裡面有兩組資料(鍵值對),sex=female,name=zhangsan。當然這裡鍵對應的資料值,可以是複雜的JSON物件或者陣列。

3.程式碼示例

 基本的JSONArray與JSONObject操作

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class ObjectAndArray1 {
    public static void main(String args[])
    {
        JSONObject jsonObj  = new JSONObject();
        jsonObj.put("name", "zhangsan");
        jsonObj.put("sex", "female");
        System.out.println(jsonObj);    
        
//輸出為:{"sex":"female","name":"zhangsan"} JSONArray jsonArray = new JSONArray(); jsonArray.add("11"); jsonArray.add("22"); jsonArray.add("33"); System.out.println(jsonArray); //輸出為:["11","22","33"] } }

 由java自帶的資料結構轉換為JSON文字

import java.util.HashMap;
import java.util.Map; import net.sf.json.JSONArray; import net.sf.json.JSONObject; public class ObjectAndArray2{ public static void main(String args[]) { //可以由陣列,列表等生成JSONArray String list[]={"11","22"}; JSONArray jsonArray = JSONArray.fromObject(list); jsonarray.add("33"); System.out.println(jsonarray); //輸出為:["11","22","33"] //可以由Map生成JSONObject Map<String,Object> map=new HashMap<String,Object>(); map.put("NO1", "第一個"); map.put("NO2", "第二個"); map.put("NO3", jsonarray); JSONObject jsonObj = JSONObject.fromObject(map); System.out.println(jsonObj); //輸出為:{"NO3":["11","22","33"],"NO2":"第二個","NO1":"第一個"} } }

讀取JSON文字

JSONArray必須用下標讀取內部資料。
JSONObject必須用”鍵“讀取對應的”值“。

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class ObjectAndArray {
    public static void main(String args[])
    {
        JSONArray jsonarray;
        JSONObject jsonObj;
        //讀取JSONArray,用下標索引獲取
        String array="[\"11\",\"22\",\"33\"]";
        jsonarray = JSONArray.fromObject(array); 
        System.out.println(jsonarray.getString(1));    //輸出為:22
        
        //讀取JSONObject
        String object="{\"NO1\":[\"44\",\"55\",\"66\"],\"NO2\":{\"NO1\":\"第一個\"}}";
        jsonObj  = JSONObject.fromObject(object);
        System.out.println(jsonObj.get("NO1"));    
        //輸出為:["44","55","66"]
        
        jsonarray = (JSONArray)(jsonObj.get("NO1")); 
        System.out.println(jsonarray.getString(1));  
        //輸出為:55
        
        //用"鍵"獲取值
        jsonObj=(JSONObject)jsonObj.get("NO2");
        System.out.println(jsonObj);    
        //輸出為:{"NO1":"第一個"}
        
    }
}