下面介绍生成以下json数据的三种方法:
1.利用JsonObject生成
JsonObject jObj = new JsonObject(); JsonObject jObj1 = new JsonObject(); JsonObject jObj2 = new JsonObject(); JsonObject jObj21 = new JsonObject(); JsonObject jObj22 = new JsonObject(); jObj1.addProperty("jObj11", "value11"); jObj1.addProperty("jObj12", "value12"); jObj21.addProperty("jObj211", "value211"); // level 2 jObj21.addProperty("jObj212", "value212"); jObj21.addProperty("jObj213", "value213"); jObj22.addProperty("jObj221", "value221"); jObj22.addProperty("jObj222", "value222"); jObj22.addProperty("jObj223", "value223"); jObj2.add("jObj21", jObj21); // level 1 jObj2.add("jObj22", jObj22); jObj.add("jObj1", jObj1); // level 0 jObj.add("jObj2", jObj2); String json = new Gson().toJson(jObj);
2.利用JSONOBJECT(org.json.JSONObject)生成
try {
JSONObject obj22 = new JSONObject();
obj22.put("jobj223", "value223");
obj22.put("jobj222", "value222");
obj22.put("jobj221", "value221");
JSONObject obj21 = new JSONObject();
obj21.put("jobj213", "value213");
obj21.put("jobj212", "value212");
obj21.put("jobj211", "value211");
JSONObject obj2 = new JSONObject();
obj2.put("jobj22", obj22);
obj2.put("jobj21", obj21);
JSONObject obj1 = new JSONObject();
obj1.put("jobj12", "value12");
obj1.put("jobj11", "value11");
JSONObject obj = new JSONObject();
obj.put("jobj1", obj1);
obj.put("jobj2", obj2);
obj.toString();
} catch (JSONException e) {
e.printStackTrace();
}
3.利用Gson库生成
首先新建下面5个需要用到的类
1.
public class Obj22 {
@SerializedName("jobj223")
private String mObj223;
@SerializedName("jobj222")
private String mObj222;
@SerializedName("jobj221")
private String mObj221;
public Obj22(String obj223, String obj222, String obj221) {
mObj223 = obj223;
mObj222 = obj222;
mObj221 = obj221;
}
2.
public class Obj21 {
@SerializedName("jobj213")
private String mObj213;
@SerializedName("jobj212")
private String mObj212;
@SerializedName("jobj211")
private String mObj211;
public Obj21(String obj213, String obj212, String obj211) {
mObj213 = obj213;
mObj212 = obj212;
mObj211 = obj211;
}
}
3.
public class Obj2 {
@SerializedName("jobj22")
private Obj22 mObj22;
@SerializedName("jobj21")
private Obj21 mObj21;
public Obj2(Obj22 obj22, Obj21 obj21) {
mObj22 = obj22;
mObj21 = obj21;
}
}
4.
public class Obj1 {
@SerializedName("jobj12")
private String mObj12;
@SerializedName("jobj11")
private String mObj11;
public Obj1(String obj12, String obj11) {
mObj12 = obj12;
mObj11 = obj11;
}
}
5.
public class Obj {
@SerializedName("jobj2")
private Obj2 mObj2;
@SerializedName("jobj1")
private Obj1 mObj1;
public Obj(Obj2 j2, Obj1 j1) {
mObj2 = j2;
mObj1 = j1;
}
}
6.创建需要的对象
private void objTest() {
Obj22 j22 = new Obj22("value213", "value212", "value211");
Obj21 j21 = new Obj21("value213", "value212", "value211");
Obj2 j2 = new Obj2(j22, j21);
Obj1 j1 = new Obj1("value12", "value11");
Obj j = new Obj(j2, j1);
}
4.直接用string赋值