问题由来:
最近由于做一个项目,项目的一个功能就是根据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里面参数少还好,如果有很多的话,岂不是要累死。
- 使用谷歌的Gson https://github.com/google/gson
- 使用阿里的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
