失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 把数据对象转成字符串_Android Json数据的转换

把数据对象转成字符串_Android Json数据的转换

时间:2019-11-19 17:13:34

相关推荐

把数据对象转成字符串_Android Json数据的转换

按目前来说,大多数前端和后台的交互数据的格式,基本都是以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数据的转换》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。