Json与List的相互转换

Json与List的相互转换问题由来 最近由于做一个项目 项目的一个功能就是根据 Listview 的内容生成一个二维码 然后扫描二维码获取 list 再重新显示 listview 核心就是 list gt 生成二维码 gt 获取二维码 gt 获取 list 生成二维码的方法 http blog csdn net demonliuhui article details 由于生成二维码的参数类型是 S

问题由来:

最近由于做一个项目,项目的一个功能就是根据Listview的内容生成一个二维码,然后扫描二维码获取list,再重新显示listview。

生成二维码的方法:

http://blog.csdn.net/demonliuhui/article/details/

由于生成二维码的参数类型是String,不能是list。如果将list的内容get出来拼成String生成二维码。扫描二维码后如何处理String转为list又是一个棘手的问题。因此我想到了将list的内容转换成成json,因为json转String及其容易,所以生成二维码就会很简单,进而对json进行解析生成list。整个问题就变成了一个很easy的问题:

list—->json——->生成二维码——>扫描二维码获取json——>解析json——->list

于是自己写了一个代码list转换为json:

 / *数据封装成json * * @param items 物料入库数据 * @return json * @throws JSONException */ public static String GoodIn2Json(List 
  
    items) throws JSONException { if (items == null) return ""; JSONArray array = new JSONArray(); JSONObject jsonObject = null; GoodInfo info = null; for (int i = 0; i < items.size(); i++) { info = items.get(i); jsonObject = new JSONObject(); jsonObject.put(Api.COLORID, info.getColorId()); jsonObject.put(Api.STOCK, info.getStock()); array.put(jsonObject); } return array.toString(); } 
  
/ * 将json数组解析出来,生成自定义数据的数组 * @param data 包含用户自定义数据的json * @return 自定义信息的数据 * @throws JSONException */ public static List 
  
    Json2UserDefine(String data) throws JSONException { List 
   
     items = new ArrayList<>(); if (data.equals("")) return items; JSONArray array = new JSONArray(data); JSONObject object = null; MoreInfo item = null; for (int i = 0; i < array.length(); i++) { object = array.getJSONObject(i); String key = object.getString(Api.KEY); String value = object.getString(Api.VALUE); item = new MoreInfo(key, value); items.add(item); } return items; } 
    
  
[{"name":"name0","age":0}][{"name":"name1","age":5}][{"name":"name2","age":10}] 

而不是:

[{"name":"name0","age":0}{"name":"name3","age":15},{"name":"name4","age":20}] 

很明显第一种格式并不是我想要的json格式,还要据循循环遍历json解析,想想就让人苦恼。 list里面参数少还好,如果有很多的话,岂不是要累死。

  1. 使用谷歌的Gson https://github.com/google/gson
  2. 使用阿里的fastJson https://github.com/alibaba/fastjson

简单的令人发指:

谷歌的Gson:

//list转换为json Gson gson = new Gson(); List 
  
    persons = new ArrayList 
   
     (); String str = gson.toJson(persons); 
    
  
//json转换为list Gson gson = new Gson(); List 
  
    persons = gson.fromJson(str, new TypeToken 
   
     >(){}. getType()); 
    
  

阿里的fastJson:

//list转换为json List 
  
    list = new ArrayList 
   
     (); String str=JSON.toJSON(list).toString(); 
    
  
//json转换为list List 
  
    list = new ArrayList 
   
     (); list = JSONObject.parseArray(jasonArray, Person.class); 
    
  

直接调用,简单无烦恼。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210420.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 上午7:38
下一篇 2026年3月19日 上午7:38


相关推荐

  • js动画requestAnimationFrame详解「建议收藏」

    js动画requestAnimationFrame详解「建议收藏」看这篇文章之前我希望你会用setTimeout做简单的动画,也就是利用递归来代替setInterval做动画。requestAnimationFrame()他的作用就是代替定时器做更加流畅高性能的动画,做可以匹配设备刷新率的动画,他解决了定时器做动画时间间隔不稳定的问题(也就是解决定时器做动画不流畅的问题)。他的用法与setTimeout差不多。与setTimeout一样的是都会返回一个唯一标识,setTimeout可以通过clearTImeout()关闭定时器。那么requestAnimatio.

    2022年8月31日
    7
  • 学习大数据需要什么基础?大数据要学哪些内容?

    学习大数据需要什么基础?大数据要学哪些内容?大数据只需要学习Java的标准版JavaSE就可以了,像Servlet、JSP、Tomcat、Struct、Spring、Hibernate,Mybaits都是JavaEE方向的技术在大数据技术里用到的并不多,只需要了解就可以了,当然Java怎么连接数据库还是要知道的,像JDBC一定要掌握一下,有同学说Hibernate或Mybaits也能连接数据库啊,为什么不学习一下,我这里不是…

    2022年4月29日
    82
  • 深入Java内存模型之阅读理解(2)「建议收藏」

    深入Java内存模型之阅读理解(2)

    2022年3月12日
    35
  • MySql 三大日志:binlog、redo log 和 undo log

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Keeper导读:日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息。mysql日志主要包括错误…

    2021年6月24日
    92
  • java bufferedwriter 编码,Java BufferedWriter对象与utf-8

    java bufferedwriter 编码,Java BufferedWriter对象与utf-8IhavethefollowingcodeandIwanttomaketheoutputstreamuseutf-8.BasicallyIhavecharacterslikeéthatappearasésoitlookslikeanencodingissue.I’veseenlotsofexamplesthatuse…O…

    2022年5月27日
    40
  • 虚拟服务器 emule,emule服务器

    虚拟服务器 emule,emule服务器emule服务器内容精选换一换生产站点服务器为SUSE操作系统,对该云服务器创建容灾演练后,发现容灾演练云服务器的网卡名称与生产站点服务器的网卡名称不一致。示例:操作系统为NovellSUSELinuxEnterpriseServer12SP364bit的生产站点服务器,挂载有5张网卡。登录生产站点服务器,查询网卡名称为eth0~eth4,如图1所示。创远程桌面协议(Remote…

    2022年6月15日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号