不同程序間的通信載體,使用json是比較方便的一種格式,當然,這種格式的好處晚上隨便找找就能看到,如果說到壞處,那麼可能就是全都是字符串傳輸,效率沒那麼高,但是對於一般開發的程序,尤其是互聯網的程序而言,綽綽有餘。
gson庫,maven的倉庫中去【 下載 】。
gson庫創建模式一種是new gson,默認方式。另外還有一種個性化配置的方式gsonBuilder。
1.json字符串轉換爲常見類型:int double String boolean
public static void testfromJson()
{
Gson gson = new Gson();
int number1 = gson.fromJson("999", int.class);
double number2 = gson.fromJson("99.99", double.class);
boolean number3 = gson.fromJson("true", boolean.class);
String str = gson.fromJson("helloworld", String.class);
numberSpecial number = gson.fromJson("{\"i\":1,\"j\":2.2,\"Address\":\"test\",\"flag\":true}", numberSpecial.class);
}
2.POJO類轉換爲json
public static void testObjectToJson()
{
Gson gson = new Gson();
numberSpecial number = new numberSpecial(1,2.2,"test",true);
String result = gson.toJson(number);
System.out.println(result);
numberSpecial number2 = gson.fromJson(result, numberSpecial.class);
System.out.println(number2.i+" "+number2.j+" "+number2.str+" "+number.flag);
}
3.json格式的字符串,轉換爲數組
public static void testArrayFromJson()
{
Gson gson = new Gson();
String jsonArray = "[\"USD\",\"CNY\",\"GBP\"]";
String [] strings = gson.fromJson(jsonArray, String[].class);
for(int i=0; i< strings.length; i++)
{
System.out.println(strings[i]);
}
}
4.將list和map集合對象,轉換爲json格式的字符串。
public static void toListJSON()
{
List<numberSpecial> list = new ArrayList<>();
Map<String,numberSpecial> map = new HashMap<>();
numberSpecial number = new numberSpecial(3,3.3,"List",true);
list.add(number);
map.put("test1", number);
numberSpecial number2 = new numberSpecial(3,3.3,"List",true);
number2.i=4;
list.add(number2);
map.put("test2", number2);
Gson gson = new Gson();
System.out.println("List json" + gson.toJson(list));
System.out.println("map json" + gson.toJson(map));
}
5.將json格式的字符串,轉換爲list和map集合對象。
public static void fromListJSON()
{
String jsonStr = "[{\"i\":3,\"j\":3.3,\"Address\":\"List\",\"flag\":true},{\"i\":4,\"j\":3.3,\"Address\":\"List\",\"flag\":true}]";
Gson gson = new Gson();
List<numberSpecial> list = gson.fromJson(jsonStr, new TypeToken<ArrayList<numberSpecial>>(){}.getType());
for(int i=0; i< list.size(); i++)
{
numberSpecial number2 = list.get(i);
System.out.println(number2.i+" "+number2.j+" "+number2.str+" "+number2.flag);
}
}