構造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);