1. 程式人生 > >JSON——Java中的使用

JSON——Java中的使用

由於 lock bean trac system boolean 類型轉換 xxx nts

1. 構建JSON方法(數據——>JSON)

這裏使用Maven構建項目

在pom.xml中添加如下依賴

 <dependency>
      <groupId>org.json</groupId>
      <artifactId>json</artifactId>
      <version>20090211</version>
    </dependency>

1.1 創建JSONObject對象,利用put(key,value)賦值,toString() 打印出JSON格式

關鍵詞:JSONObject對象,put(), toString()

public class JsonObjectSimple {

    public static void main(String[] args) {
        jSONObjectSimple();
    }
    
    private static void jSONObjectSimple() {

        JSONObject xiaofeng=new JSONObject();
        Object nullObj=null;//因為put()方法的原因,這裏不能直接使用null,所以創建null的對象來跳過編譯器的檢查
try { xiaofeng.put("name", "小峰"); xiaofeng.put("age", 22); xiaofeng.put("birthday", "1999-11-22"); xiaofeng.put("school", "Qinghua University"); xiaofeng.put("major", new String[] {"sing","coding"}); xiaofeng.put(
"girlfriend", "true"); xiaofeng.put("car",nullObj); //不能直接使用null,需要創建null的對象來跳過編譯器的檢查 xiaofeng.put("comment","JSON裏不能直接使用註釋,需要添加時可通過此方式。。"); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(xiaofeng.toString()); } }

控制臺輸出後復制其到 http://www.jsoneditoronline.org/ 可查看 JSON 數據結構

技術分享

1.2 通過 HashMap 構建

關鍵詞:HashMap() , put() , toString() , JSONObject(xiaofeng)

private static void createJSONByMap() {

        Map<String,Object> xiaofeng=new HashMap<String,Object>();
        Object nullObj=null;
        xiaofeng.put("name", "小峰");
        xiaofeng.put("age", 22);
        xiaofeng.put("birthday", "1999-11-22");
        xiaofeng.put("school", "Qinghua University");
        xiaofeng.put("major", new String[] {"sing","coding"});
        xiaofeng.put("girlfriend", "true");
        xiaofeng.put("car",nullObj); //不能直接使用null,需要創建null的對象來跳過編譯器的檢查
        xiaofeng.put("comment","JSON裏不能直接使用註釋,需要添加時可通過此方式。。");

        System.out.println(new JSONObject(xiaofeng).toString());
    }

3. 使用 JavaBean 創建 JSON

關鍵詞:JavaBean, setXxx(), JSONObject(xiaofeng)

首先創建 JavaBean 類Person(略), 之後創建。。。

private static void createJSONByBean() {
      //創建Person對象,利用set()方法賦值,最後轉為JSONObject對象輸出
        Person xiaofeng=new Person();
        xiaofeng.setName("小峰");
        xiaofeng.setAge(22.5);
        xiaofeng.setGirlfriend(true);
        xiaofeng.setMajor(new String[]{"唱歌","coding"});
        
        System.out.println(new JSONObject(xiaofeng));            
    }

註意,在創建JavaBean時,由於JSON不支持date格式,所以日期格式需要設置為String類型,這也是JSON的缺陷。

2. 解析讀取JSON數據(JSON——>數據)

xiaofeng.json
{
  "birthday": "1999-11-22",
  "girlfriend": "true",
  "major": [
    "sing",
    "coding"
  ],
  "school": "Qinghua University",
  "car": null,
  "name": "小峰",
  "comment": "JSON裏不能直接使用註釋,需要添加時可通過此方式。。",
  "age": 22
}

從文件中讀取JSON

關鍵詞:

ReadJSON.class.getResource("/xiaofeng.json").getFile() ,JSONArray,readFileToString(file)

public class ReadJSON {
    
    public static void main(String[] args) throws IOException, JSONException {
        //獲取本文件路徑下的json文件
        File file=new File(ReadJSON.class.getResource("/xiaofeng.json").getFile());
        //讀取json文件內容
        String content=FileUtils.readFileToString(file);
        JSONObject jsonObject =new JSONObject(content);
System.out.println(
"姓名是 :"+jsonObject.getString("name")); System.out.println("年齡是 :"+jsonObject.getDouble("age")); System.out.println("有女朋友嗎 ?"+jsonObject.getBoolean("girlfriend"));
//數組類型轉換成JSONArray類型來解析,不能直接讀取 JSONArray majorArray
=jsonObject.getJSONArray("major"); for(int i=0;i<majorArray.length();i++){ String m=(String) majorArray.get(i); System.out.println("專業——"+(i+1)+m); } } }

控制臺輸出

              技術分享

為增加程序健壯性,可在JSON數據解析時加入 非空【isNull()】 判斷

     //判斷 name 是否為空
        if (!jsonObject.isNull("name")) {
            System.out.println("姓名是 :" + jsonObject.getString("name"));
        }
        //反例,無輸出
        if (!jsonObject.isNull("nme")) {
            System.out.println("姓名是 :" + jsonObject.getString("name"));
        }

        System.out.println("年齡是 :" + jsonObject.getDouble("age"));

JSON——Java中的使用