按目前来说,大多数前端和后台的交互数据的格式,基本都是以json格式为主,json数据已经是变得很常见了。为了能够更加方便的处理json数据,我自己封装了一个工具类,使得能够更加方便快捷的去处理json数据。
先上代码
TypeBuilder类
public class TypeBuilder implements ParameterizedType { private final Class raw; private final Type[] args; public TypeBuilder(Class raw, Type[] args) { this.raw = raw; this.args = args != null ? args : new Type[0]; } @Override public Type[] getActualTypeArguments() { return args; } @Override public Type getRawType() { return raw; } @Override public Type getOwnerType() { return null; }}
JsonUtil主工具类
public class JsonUtil { private static Gson gson = null; static { GsonBuilder builder = new GsonBuilder(); builder.registerTypeAdapter(JsonObject.class, new JsonDeserializer() { @Override public Object deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext)throws JsonParseException {JsonObject jsonObject = jsonElement.getAsJsonObject();return jsonObject; } }); builder.registerTypeAdapter(Double.class, new JsonSerializer() { @Override public JsonElement serialize(Double src, Type typeOfSrc, JsonSerializationContext context) {if (src == src.longValue())return new JsonPrimitive(src.longValue());return new JsonPrimitive(src); } }); gson = builder.disableHtmlEscaping().create(); } /*** JSON字符串转成对象** @param content* @param clazz* @param* @return*/ public static T fromJsonObject(String content, Class clazz) { if (StringUtil.isEmpty(content)) { return null; } Type type = new TypeBuilder(clazz, new Class[]{clazz}); return gson.fromJson(content, type); } /*** JSON字符串转成数组** @param content* @param clazz* @param* @return*/ public static List fromJsonArray(String content, Class clazz) { if (StringUtil.isEmpty(content)) { return null; } // 生成List 中的 List Type listType = new TypeBuilder(List.class, new Class[]{clazz}); return gson.fromJson(content, listType); } /*** 将对象转换成字符串** @param object* @return*/ public static String toJson(Object object) { if (object == null) { return null; } return gson.toJson(object); } /*** 将对象转换成map对象** @param obj* @return*/ public static Map toMap(Object obj) { JsonElement element = gson.toJsonTree(obj); return gson.fromJson(element, Map.class); } public static T fromJsonObject(Object obj, Class clazz) { Type type = new TypeBuilder(clazz, new Class[]{clazz}); JsonElement element = gson.toJsonTree(obj); return gson.fromJson(element, type); } public static List fromJsonArray(Object obj, Class clazz) { Type listType = new TypeBuilder(List.class, new Class[]{clazz}); JsonElement element = gson.toJsonTree(obj); return gson.fromJson(element, listType); }}
使用方法
1.例如我们收到的一个json数据为
String jsonData="{"name":"张三","age":1,"phone":"13000000000"}"
2.我们需要根据这个数据格式,新建一个对象
public class User{private String name;private int age;private String phone;...忽略get方法和set方法}
3.使用工具类的fromJsonObject方法
User user=JsonUtil.fromJsonObject(jsonData,User.class);
这样我们就可以将字符串的数据转换为一个对象。
如果我们需要将一个对象转成字符串,则只需要使用toJson方法即可
User user=new User();user.setName("李四");String data=JsonUtil.toJson(user);//输出的data则为{"name":"李四","age":0,"phone":null}
如果觉得《把数据对象转成字符串_Android Json数据的转换》对你有帮助,请点赞、收藏,并留下你的观点哦!