使用Gson我们可以很方便把一个自定义Java对象转换为Gson。但是,我们也需要知道一些Java基本对象和Gson之间的转换,我们这里就说一些基本Java对象和Gson直接的转换。
1、构建JsonObject对象
Json字符串中,如果想要显示出来是 { } 这样格式的,就必须构建JsonObject对象
eg:
JsonObject spanObj=new JsonObject();
spanObj.addProperty("latitude_delta",0);
spanObj.addProperty("longitude_delta",0);
JsonObject regionObj=new JsonObject();
regionObj.add("center", centerObj);
regionObj.add("span", spanObj);
JsonObject有2种add方法,一种是addProperty,这个方法的第一个参数是Key,第二个参数是Value,Key只能是String类型的,Value可以是Boolean,Integer,String 等Java基本类型
第二种方法是add,add方法也有2个参数,分别作为Key,Value,其中Value是JsonElement对象,其中JsonElement有一些子类,像:JsonArray, JsonNull, JsonObject, JsonPrimitive这些都是JsonElement的子类
2、构建JsonArray、JsonElement对象
在Json字符串中,如果想要显示出来是 [ ] 这样格式的,就必须构建一个JsonArray对象或者JsonElement对象
JsonArray的add方法只能接受JsonElement或其子类,所以我们需要先构建一个JsonElement或JsonObject等
eg:
JsonArray businessesArray=new JsonArray();
businessesArray.add(businessObj);//businessObj为一个JsonObject对象
因为JsonElement没有显式的构造方法,我们如果想要构建JsonArray类型的JsonElement时,需要借用Gson的toJsonTree方法,该方法接受一个Object对象,我们可以用任意的Java对象来构建JsonElement:
Gson gson=new Gson();
List<String> cate1=new ArrayList<String>();
cate1.add("Local Flavor");
cate1.add("localflavor");
List<String> cate2=new ArrayList<String>();
cate2.add("Mass Media");
cate2.add("massmedia");
List<List<String>> cates=new ArrayList<List<String>>();
cates.add(cate1);cates.add(cate2);
JsonElement categoriesElement=gson.toJsonTree(cates);
3、生成JSON字符串
如果需要输出JSON字符串,第一种方法是构建一个JsonObject对象,然后输出JsonObject对象即可,第二种是用Gson的toJson方法,生成一个String类型的Json串
eg:(其中Obj是一个JsonObject对象)
String gsonStr=gson.toJson(obj);
System.out.println(gsonStr);
System.out.println(obj);
4、示例
import java.util.ArrayList;
import java.util.List;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
public class GsonAssembled {
public static void assembleGson(){
JsonObject obj=new JsonObject();
Gson gson=new Gson();
JsonObject businessObj=new JsonObject();
List cate1=new ArrayList();
cate1.add("Local Flavor");
cate1.add("localflavor");
List cate2=new ArrayList();
cate2.add("Mass Media");
cate2.add("massmedia");
List> cates=new ArrayList>();
cates.add(cate1);cates.add(cate2);
JsonElement categoriesElement=gson.toJsonTree(cates);
businessObj.add("categories", categoriesElement);
businessObj.addProperty("is_claimed",true );
businessObj.addProperty("is_closed",false );
businessObj.addProperty("name","Yelp" );
businessObj.addProperty("phone","4159083801" );
businessObj.addProperty("menu_date_updated",1317414369 );
JsonObject userBaseObj1=new JsonObject();
userBaseObj1.addProperty("name", "yuan");
userBaseObj1.addProperty("sex", "male");
JsonObject userBaseObj2=new JsonObject();
userBaseObj2.addProperty("name", "wang");
userBaseObj2.addProperty("sex", "female");
JsonArray userBaseArray=new JsonArray();
userBaseArray.add(userBaseObj1);
userBaseArray.add(userBaseObj2);
JsonObject userBaseObj=new JsonObject();
userBaseObj.add("user_base", userBaseArray);
businessObj.add("users", userBaseObj);
JsonObject centerObj=new JsonObject();
centerObj.addProperty("latitude",37.7861386 );
centerObj.addProperty("longitude",-122.4026213 );
JsonObject spanObj=new JsonObject();
spanObj.addProperty("latitude_delta",0);
spanObj.addProperty("longitude_delta",0);
JsonObject regionObj=new JsonObject();
regionObj.add("center", centerObj);
regionObj.add("span", spanObj);
JsonArray businessesArray=new JsonArray();
businessesArray.add(businessObj);
obj.add("businesses", businessesArray);
obj.add("region", regionObj);
obj.addProperty("total", 10651);
String gsonStr=gson.toJson(obj);
System.out.println(gsonStr);
System.out.println(obj);
}
public static void main(String[] args) {
GsonAssembled.assembleGson();
}
}
/**
* example json string
{
"businesses": [
{
"categories": [
[
"Local Flavor",
"localflavor"
],
[
"Mass Media",
"massmedia"
]
],
"is_claimed": true,
"is_closed": false,
"name": "Yelp",
"phone": "4159083801",
"menu_date_updated": 1317414369,
"users": {
"user_base": [
{
"name": "yuan",
"sex": "male"
},
{
"name": "wang",
"sex": "female"
}
]
}
}
],
"region": {
"center": {
"latitude": 37.7861386,
"longitude": -122.4026213
},
"span": {
"latitude_delta": 0,
"longitude_delta": 0
}
},
"total": 10651
}
* */