1.转json字符串(gson.toJson),支持java bean、Map、List等
- Gson gson = new Gson();
- Student student = new Student();
- student.setName("xuanyouwu");
- student.setAge(26);
- String jsonStr = gson.toJson(student);
2.json字符串转换成对象
- Type type = new TypeToken<ArrayList<String>>() {
- }.getType();
- ArrayList<String> sList=gson.fromJson(listJsonStr, type);
3.JsonObject
- JsonObject jsonObject=new JsonObject();
- jsonObject.addProperty("name","xuanyouwu");
- jsonObject.addProperty("age",26);
- String jsonStr = jsonObject.toString();
4.JsonArray数组字段
- JsonObject jsonObject2=new JsonObject();
- jsonObject2.addProperty("name","xuanyouwu");
- jsonObject2.addProperty("age",26);
- JsonArray jsonElements2=new JsonArray();
- jsonElements2.add("骑车");
- jsonElements2.add("打游戏");
- jsonElements2.add("看电视");
- jsonObject2.add("hobby",jsonElements2);
- log("------>create jsonObject inner JsonArray:"+jsonObject2);
------>create jsonObject inner JsonArray:{"name":"xuanyouwu","age":26,"hobby":["骑车","打游戏","看电视"]}
5.重命名注解( SerializedName)5.1 转换关键字key
json转换成JavaBean时,json字段的key 默认必须和我们声明类的字段名称一样,当服务器端返回了关键字怎么办,比如key 为new switch这样,我们 在声明类的时候不能写这样的字段,可能你想服务器端改动,他可能要改数据库,但是我告诉你,做服务端的大部分不愿意改动他的json,是很自私的!这时候重命名注解都排上用场了 第二种场景:服务器端返回的json 的key 简直太丑,或者太长,你想简化,my_parent_name,可以简化成mpn 比较优雅简介
- public static class User {
- public String name;
- public int age;
- @SerializedName("new")
- public int isnew;
- @Override
- public String toString() {
- return "User{" +
- "name='" + name + '\'' +
- ", age=" + age +
- ", isnew=" + isnew +
- '}';
- }
- }
5.2 结合alternate 提供多种备用字段key来解析
- public static class User {
- public String name;
- public int age;
- @SerializedName(value = "desc",alternate = {"other","note"})
- public String desc;
- @Override
- public String toString() {
- return "User{" +
- "name='" + name + '\'' +
- ", age=" + age +
- ", desc='" + desc + '\'' +
- '}';
- }
- }
@SerializedName(value ="desc",alternate = {"other","note"}) 如果json中有other就会解析成desc 如果有note也会解析成desc,注意1:value中的值不能出现在alternate中,注意2:alternate的备选字段 会后面的替换前面的
转载自https://blog.csdn.net/axuanqq/article/details/51441590