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