最近一个项目中,需要将从服务器上获取到的JSON字符串转换为对象,大概研究了一下,发现在项目中很多地方都要用到,而且有的时候需要返回的是一个集合,所以写了个方法,留着自用。
public class JsonUtils {/*** 将传入的json字符串按类模板解析成对象* @param json 需要解析的json字符串* @param cls 类模板* @return 解析好的对象*/public static <T> T getObj(String json,Class<T> cls){Gson gson = new Gson();T bean = (T) gson.fromJson(json, cls);return bean;}/*** 将传入的对象解析成json字符串* @param bean 需要解析的对象* @return 解析完成的json字符串*/public static <T> String getJsonString(T bean){Gson gson = new Gson();String json = gson.toJson(bean, bean.getClass());return json;}/*** 将获取到的json字符串转换为对象集合进行返回* @param jsonData 需要解析的json字符串* @param cls 类模板* @return*/public <T> List<T> getObjList(String jsonData,Class<T> cls){List<T> list = new ArrayList<T>();if (jsonData.startsWith("[") && jsonData.endsWith("]")) {//当字符串以“[”开始,以“]”结束时,表示该字符串解析出来为集合//截取字符串,去除中括号jsonData = jsonData.substring(1, jsonData.length() -1);//将字符串以"},"分解成数组String[] strArr = jsonData.split("\\},");//分解后的字符串数组的长度int strArrLength = strArr.length;//遍历数组,进行解析,将字符串解析成对象for (int i = 0; i < strArrLength; i++) {String newJsonString = null;if (i == strArrLength -1) {newJsonString = strArr[i];} else {newJsonString = strArr[i] + "}";}T bean = getObj(newJsonString, cls);list.add(bean);}}if (list == null || list.size() == 0) {return null;}return list;}
}
这里测试一下,JSON字符串有点长,就放在后面了。
public class Test {public static void main(String[] args) {Exposure exp = JsonUtils.getObj(json, Exposure.class);System.out.println("exp = " + exp);String myJson = JsonUtils.getJsonString(exp);System.out.println("myJson = " + myJson);List<User> userList = JsonUtils.getObjList(listJson, User.class);for (User user : userList) {System.out.println("user = " + user);}}
}public static String json = "{\"Id\": 9928,\"CustomerId\": 9248,\"Remark\": \"大类其他\",\"ExposureItem\": {\"Id\": 20734,\"Has\": true,\"AllergyNames\": null,\"AllergyNamesStr\": \"化学品,毒物,射线,其他\",\"Other\": \"暴露史其他\",\"PropertyName\": \"ExposureItem\",\"Text1\": null,\"Text2\": null,\"Text3\": null,\"Text4\": null,\"Text5\": null,\"Text6\": null,\"Text7\": null,\"Text8\": null,\"Text9\": null,\"Text10\": null,\"Text11\": null,\"Text12\": null,\"Text13\": null,\"Text14\": null,\"Date\": null,\"Remark\": null},\"OccupationalItem\": {\"Id\": 20735,\"Has\": true,\"AllergyNames\": null,\"AllergyNamesStr\": null,\"Other\": null,\"PropertyName\": \"OccupationalItem\",\"Text1\": \"工种\",\"Text2\": null,\"Text3\": \"毒物种类\",\"Text4\": \"1997\",\"Text5\": \"1\",\"Text6\": \"2\",\"Text7\": \"1998\",\"Text8\": \"3\",\"Text9\": \"4\",\"Text10\": null,\"Text11\": null,\"Text12\": null,\"Text13\": null,\"Text14\": null,\"Date\": null,\"Remark\": null}}";public static String listJson = "[{\"UserId\":9555,\"Name\":\"测试账号\",\"UserType\":\"user\",\"TypeName\":\"VIP金卡\",\"UserTypeId\":4,\"Sex\":0,\"IDCard\":\"110102198506020034\",\"Country\":\"中国\",\"WorkUnit\":\"四川\",\"Phone\":\"02887654321\",\"Mobile\":\"13901234567\",\"QQ\":\"412455414\",\"Mail\":\"412455414@qq.com\",\"FamilyContact1\":\"张三\",\"FamilyContact2\":\"李四\",\"FamilyContact1Phone\":\"12345678912\",\"FamilyContact2Phone\":\"98765432121\",\"Address\":\"成都市\",\"NearbyHospital\":\"未知\",\"HealthServiceCentre\":\"没有\",\"ResidentType\":2,\"BloodType\":3,\"RHNegative\":2,\"EducationBackground\":5,\"Career\":1,\"Career_Other\":\"\",\"MaritalStatus\":0,\"MedicalPayWayId\":2,\"MedicalPayWay_Other\":\"\",\"SocialSecurityNo\":null,\"CardNo\":\"\",\"Birthday\":\"1985-06-02T00:00:00+08:00\",\"ServiceBuyWayId\":1,\"ServiceBuyWay_Other\":null,\"ExpireTime\":\"2016-03-17T00:00:00+08:00\",\"Height\":\"\",\"Waistline\":\"\",\"Hipline\":\"\",\"Weight\":\"\"},{\"UserId\":9555,\"Name\":\"测试账号\",\"UserType\":\"user\",\"TypeName\":\"VIP金卡\",\"UserTypeId\":4,\"Sex\":0,\"IDCard\":\"110102198506020034\",\"Country\":\"中国\",\"WorkUnit\":\"四川\",\"Phone\":\"02887654321\",\"Mobile\":\"13901234567\",\"QQ\":\"412455414\",\"Mail\":\"412455414@qq.com\",\"FamilyContact1\":\"张三\",\"FamilyContact2\":\"李四\",\"FamilyContact1Phone\":\"12345678912\",\"FamilyContact2Phone\":\"98765432121\",\"Address\":\"成都市\",\"NearbyHospital\":\"未知\",\"HealthServiceCentre\":\"没有\",\"ResidentType\":2,\"BloodType\":3,\"RHNegative\":2,\"EducationBackground\":5,\"Career\":1,\"Career_Other\":\"\",\"MaritalStatus\":0,\"MedicalPayWayId\":2,\"MedicalPayWay_Other\":\"\",\"SocialSecurityNo\":null,\"CardNo\":\"\",\"Birthday\":\"1985-06-02T00:00:00+08:00\",\"ServiceBuyWayId\":1,\"ServiceBuyWay_Other\":null,\"ExpireTime\":\"2016-03-17T00:00:00+08:00\",\"Height\":\"\",\"Waistline\":\"\",\"Hipline\":\"\",\"Weight\":\"\"},{\"UserId\":9555,\"Name\":\"测试账号\",\"UserType\":\"user\",\"TypeName\":\"VIP金卡\",\"UserTypeId\":4,\"Sex\":0,\"IDCard\":\"110102198506020034\",\"Country\":\"中国\",\"WorkUnit\":\"四川\",\"Phone\":\"02887654321\",\"Mobile\":\"13901234567\",\"QQ\":\"412455414\",\"Mail\":\"412455414@qq.com\",\"FamilyContact1\":\"张三\",\"FamilyContact2\":\"李四\",\"FamilyContact1Phone\":\"12345678912\",\"FamilyContact2Phone\":\"98765432121\",\"Address\":\"成都市\",\"NearbyHospital\":\"未知\",\"HealthServiceCentre\":\"没有\",\"ResidentType\":2,\"BloodType\":3,\"RHNegative\":2,\"EducationBackground\":5,\"Career\":1,\"Career_Other\":\"\",\"MaritalStatus\":0,\"MedicalPayWayId\":2,\"MedicalPayWay_Other\":\"\",\"SocialSecurityNo\":null,\"CardNo\":\"\",\"Birthday\":\"1985-06-02T00:00:00+08:00\",\"ServiceBuyWayId\":1,\"ServiceBuyWay_Other\":null,\"ExpireTime\":\"2016-03-17T00:00:00+08:00\",\"Height\":\"\",\"Waistline\":\"\",\"Hipline\":\"\",\"Weight\":\"\"}]";
如有不对的地方,请指教。如有侵权,请指出。
交流群:181745436

Gson解析json字符串,并封装成ListT相关推荐

  1. java中gso是什么意思_Java中用Gson解析json字符串

    本文最后更新于2019年9月13日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢! =Start= 缘由: 因为阿里开源的fastjson前段时间爆出的漏洞实在是太多了(而且有些漏洞他 ...

  2. 试用Gson 解析json字符串

    1.传统的数据量非常小的json 数据,我们可以使用 JsonObject.JsonArray进行解析,从而可以从Server拿到需要的数据.但是对于Json数据量大.并且类型相对较多的情况下,如果还 ...

  3. Android利用Gson解析Json数据

    其实,要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个 ...

  4. json解析:[1]gson解析json

    客户端与服务器进行数据交互时,常常需要将数据在服务器端将数据转化成字符串并在客户端对json数据进行解析生成对象.但是用jsonObject和jsonArray解析相对麻烦.利用Gson和阿里的fas ...

  5. JSONObject 和 GSON 解析 JSON 数据详解(转)

    转载:http://www.jianshu.com/p/f99de3ec0636 点此进入:从零快速构建APP系列目录导图 点此进入:UI编程系列目录导图 点此进入:四大组件系列目录导图 点此进入:数 ...

  6. Java-json系列(一):用GSON解析Json格式数据

    GSON是谷歌提供的开源库,用来解析Json格式的数据,非常好用.如果要使用GSON的话,则要先下载gson-2.2.4.jar这个文件,如果是在Android项目中使用,则在Android项目的li ...

  7. Gson解析json对象,json数组

    String jsonStr 为 {    "error": 0,    "msg": "成功",    "result" ...

  8. C#解析JSON字符串总结

    C#解析JSON字符串总结 JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2 ...

  9. c#解析json字符串处理清晰易懂的方法

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

最新文章

  1. android系统短信库的一些用法
  2. wamp php http 1.0500,HTTP 错误 500.0 - Internal Server Error C:\php-5.3.5\php.exe - FastCGI 进程意外退出...
  3. h5 server send event(sse)
  4. 【Python CheckiO 题解】Best Stock
  5. 增强的Java FTP工具----扩展免费版的edtftpj
  6. 【原创】OllyDBG 入门系列(一)-认识OllyDBG
  7. python规模大小的指标是_训练数据多少才够用
  8. 19-linux下ElasticSearch.6.2.1与head、Kibana、X-Pack、SQL、IK、PINYIN插件的配置安装
  9. Zend Framework学习之常用校验器
  10. html设置只在最后一页显示页脚,word文档只在最后一页插入页眉怎么操作
  11. 让android支持AZERTY法语键盘
  12. MOD函数的使用方法
  13. 通过添加css样式cursor属性,改变鼠标的外形,变成放大镜
  14. 第三模块:面向对象网络编程基础 第1章 面向对象
  15. CIDR无类别域间路由
  16. [USACO 2.2.1] Preface Numbering
  17. kylin 连接mysql_Ubuntu Kylin 安装和配置mysql
  18. 网校搭建完成,课程还需要设计吗?
  19. 天载配资点评指数放量下跌
  20. 新版标准日本语中级_第三十一课

热门文章

  1. mongoBooster里使用mongo的foreach方法示例
  2. java青蛙_跳青蛙的求解Java实现
  3. C++ 链表的基本操作
  4. PS2018学习笔记(03-18节)
  5. 红米5双清_红米5刷recovery教程_红米5第三方中文recovery下载
  6. 百度地图-设置地图最小、最大级别
  7. Win11怎么打开AMD显卡控制面板
  8. Flutter实战开发(2)------实现条形码扫描获取商品信息
  9. zTree的使用教程
  10. 基于 SpringBoot+Vue 的开源数据可视化分析工具