构造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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章