为了账号安全,请及时绑定邮箱和手机立即绑定

Json与List的相互转换

标签:
Cocos2d-x

生成二维码的方法:

由于生成二维码的参数类型是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<GoodInfo> 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<MoreInfo> Json2UserDefine(String data) throws JSONException {        List<MoreInfo> 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;    }

这样只能处理list里面只有一组数据的情况。如果循环封装成json,得到的格式就是:

[{"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里面参数少还好,如果有很多的话,岂不是要累死。

于是用json转换为list。

1.使用谷歌的Gson.jar。

2.使用阿里的fastJson.jar

谷歌的Gson.jar:

//list转换为jsonGson gson = new Gson();  List<Person> persons = new ArrayList<Person>();  String str = gson.toJson(persons);

//json转换为listGson gson = new Gson();  List<Person> persons = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType());

阿里的fastJson.jar:

//list转换为jsonList<CustPhone> list = new ArrayList<CustPhone>();String str=JSON.toJSON(list).toString();

//json转换为list  List<Person> list = new ArrayList<Person>();          list = JSONObject.parseArray(jasonArray, Person.class);



作者:架构师springboot
链接:https://www.jianshu.com/p/62e8557542ab


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消