gson转对象
Gson 中对象类型的相互转换
最近使用Gson来处理了json串,使用了一些常用的方法,为加深印象,因此记录下来
package JsonObjectDemo;import com.google.gson.*;
import com.google.gson.reflect.TypeToken;import java.util.ArrayList;
import java.util.List;public class JsonObjectDemo {public static void main(String[] args) {List<User> userList = new ArrayList<User>();User user = new User("张三", 18);User user1 = new User("李四", 20);userList.add(user);userList.add(user1);Gson gson = new Gson();JsonObject jsonObject = new JsonObject();jsonObject.addProperty("name","张三");jsonObject.addProperty("age",18);//JavaBean 转 StringString userString = gson.toJson(user, User.class);//或者使用Type来获取类型 String s1 = gson.toJson(user, new TypeToken<User>(){}.getType());//{"name":"张三","age":18}//System.out.println(userString);//JavaBean 转 JsonObjectJsonObject asJsonObject = gson.toJsonTree(user).getAsJsonObject();//{"name":"张三","age":18}//System.out.println(asJsonObject);//String 转 JavaBeanString javaBeanString = "{\"name\":\"张三\",\"age\":18}";User user3 = gson.fromJson(javaBeanString, User.class);//User{name='张三', age=18}//System.out.println(user3);//String 转 JsonObjectJsonObject jsonObject1 = new JsonParser().parse(javaBeanString).getAsJsonObject();//{"name":"张三","age":18}//System.out.println(jsonObject1);//JsonObject 转 JavaBeanUser user2 = gson.fromJson(jsonObject, User.class);//User{name='张三', age=18}//System.out.println(user2.toString());//JsonObject 转 String//{"name":"张三","age":18}System.out.println(jsonObject1.toString());//List 转 StringString listString = gson.toJson(userList);// [{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(listString);//List 转 JsonArrayJsonArray jsonArray = gson.toJsonTree(userList, new TypeToken<List<User>>() {}.getType()).getAsJsonArray();//[{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(jsonElement);//String 转 JsonArrayJsonArray jsonArray1 = new JsonParser().parse(listString).getAsJsonArray();//[{"name":"张三","age":18},{"name":"李四","age":20}]//System.out.println(jsonArray1);//String 转 listList<User> listUser = gson.fromJson(listString, new TypeToken<List<User>>() {}.getType());//[User{name='张三', age=18}, User{name='李四', age=20}]//System.out.println(listUser.toString());//JsonArray 转 String//[{"name":"张三","age":18},{"name":"李四","age":20}]System.out.println(jsonArray.toString());//JsonArray 转 ListList<User> listUser1 = gson.fromJson(jsonArray, new TypeToken<List<User>>() {}.getType());//[User{name='张三', age=18}, User{name='李四', age=20}]//System.out.println(listUser1);}
}class User {private String name;private int age;User() {}User(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "User{" +"name='" + name + '\'' +", age=" + age +'}';}
}
1 JsonElement 中 添加 null 只能使用 add 方法
2 null值的类型是 JsonNull 因此判null的时候应该使用 isJsonNull()
3 如果json中包含null值,使用gson转出来的对象都不包含含有null值的 key-value对,这时候需要使用另一个gson对象来做处理
4 Gson gsonContainsNull = new GsonBuilder().serializeNulls().create();
5 如果想对 value 值做处理的封装,比如说将 value 中的 null 值转为其他字符,则可以使用 gson中的TypeAdapter来做相应的处理。
————————————————
版权声明:本文为CSDN博主「beetle_lzk」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lixiaoksi/article/details/112388626
Gson 中对象类型的相互转换_beetle_lzk的博客-CSDN博客_gson转对象