構造Json字段

構造Json字段

構造下面內容:

{
    "name":"張三",
    "age":23,
    "birthday":"1994-01-01",
    "school":"藍翔",
    "major":["理髮","挖掘機"],
    "married":false,
    "car":null
}

三種方法構造json字段

1.使用JSONObject構造Json

/**
 * 使用JSONObject構造Json
 * 特點:不會添加值爲null類型的項
 * {"name":"張三","age":23,"birthday":"1994-01-01","school":"藍翔",
 * "major":["理髮","挖掘機"],"married":false}
 * @return JSONObject
 */
public static JSONObject createJsonWithJSONObject() {
    JSONObject zhangsan = new JSONObject();
    try {
        zhangsan.put("name", "張三");
        zhangsan.put("age", 23);
        zhangsan.put("birthday", "1994-01-01");
        zhangsan.put("school", "藍翔");
        JSONArray major = new JSONArray();
        major.put("理髮");
        major.put("挖掘機");
        zhangsan.put("major", major);
        //也可以使用字符串數組
        //zhangsan.put("major",new String[]{"理髮","挖掘機"});
        zhangsan.put("married", false);
        //實際上值爲null,不會添加該項
        zhangsan.put("car", null);

        Log.d(TAG, "createJsonWithJSONObject: " + zhangsan.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    return zhangsan;
}

2.使用HashMap構造Json

/**
 * 使用HashMap構造Json
 * 特點:無序
 * 調用:JSONObject(Map copyFrom)
 * {"married":false,"name":"張三","car":null,"age":23,"major":["理髮","挖掘機"],
 * "birthday":"1994-01-01","school":"藍翔"}
 * @return JSONObject
 */
public static JSONObject createJsonWithHashMap() {
    HashMap<String, Object> zhangsan = new HashMap<>();
    zhangsan.put("name", "張三");
    zhangsan.put("age", 23);
    zhangsan.put("birthday", "1994-01-01");
    zhangsan.put("school", "藍翔");
    zhangsan.put("major", new String[]{"理髮", "挖掘機"});
    zhangsan.put("married", false);
    zhangsan.put("car", null);
    //傳入HashMap對象到JSONObject構造方法
    JSONObject obj = new JSONObject(zhangsan);
    Log.d(TAG, "createJsonWithHashMap: " + obj.toString());
    return obj;
}

3.使用Bean類構造Json

/**
 * 使用Bean類構造Json
 * 特點:可重用,需要注意bean類中toString()方法的定義
 * 調用:JSONObject(String json)
 * {"name":"張三","age":23,"birthday":"1994-01-01","school":"藍翔","major":["理髮","挖掘機"],
 * "married":false,"car":"null"}
 * @return JSONObject
 */
public static JSONObject createJsonWithBean() {
    People zhangsan = new People();
    zhangsan.setName("張三");
    zhangsan.setAge(23);
    zhangsan.setBirthday("1994-01-01");
    zhangsan.setSchool("藍翔");
    List<String> majors = new ArrayList<>();
    majors.add("理髮");
    majors.add("挖掘機");
    zhangsan.setMajor(majors);
    zhangsan.setMarried(false);
    zhangsan.setCar(null);

    //接下來有兩種方法可選
    //1.使用Gson,特點:無序,返回json串
    Gson gson=new Gson();
    String result = gson.toJson(zhangsan);
    Log.d(TAG, "createJsonWithBean: result= "+result);

    //2.使用JSONObject
    JSONObject obj = null;
    try {
        obj = new JSONObject(zhangsan.toString());
    } catch (JSONException e) {
        e.printStackTrace();
    }
    Log.d(TAG, "createJsonWithBean: "+obj);
    return obj;
}

注意:如若要打印出的json有格式可以這樣:

GsonBuilder gsonBuilder=new GsonBuilder();
//配置Gson輸出適合漂亮打印頁面的Json。此選項僅影響Json序列化
gsonBuilder.setPrettyPrinting();
Gson gson=gsonBuilder.create();
String result = gson.toJson(zhangsan);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章