Json与List的相互转换

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

问题由来:

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

核心就是: 
list—->生成二维码——>获取二维码—–>获取list

生成二维码的方法:

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

由于生成二维码的参数类型是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();}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 216
 
  • /*** 将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;}

    7代码很简单,就不详解。这样貌似就大功告成了,但是: 
     

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

    [{"name":"name0","age":0}][{"name":"name1","age":5}][{"name":"name2","age":10}]
    • 1

    而不是:

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

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

    于是我百度了一下:list转换为json,不查不知道,一查原来还有json转换为list。狂吐两口老血!!! 
    不过也算是学到了。 
    1.使用谷歌的Gson.jar。 
    2.使用阿里的fastJson.jar 
    已经打包好了,地址: 
    http://download.csdn.net/detail/demonliuhui/9666072

    简单的令人发指:

    谷歌的Gson.jar

    //list转换为json
    Gson gson = new Gson();  
    List<Person> persons = new ArrayList<Person>();  
    String str = gson.toJson(persons);  
    //json转换为list
    Gson gson = new Gson();  
    List<Person> persons = gson.fromJson(str, new TypeToken<List<Person>>(){}.getType()); 
    阿里的fastJson.jar:
    //list转换为json
    List<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);  
     

     

     

     

    导入jar包直接调用,简单无烦恼。

     

    另一方法 :

     

    package com.listandjson;import java.util.ArrayList;
    import java.util.List;
    import net.sf.json.JSONArray;public class Test {public static void main(String[] args) {List<String> list = new ArrayList<String>();list.add("abc");list.add("123");//list转成jsonString json =JSONArray.fromObject(list).toString();System.out.println(json);  //运行:["abc","123"]//json转成listJSONArray jsonArray = JSONArray.fromObject(json);List<String> list2 = (List) JSONArray.toCollection(jsonArray);for (int i = 0; i < list2.size(); i++) {System.out.println(list2.get(i));  //运行:abc//    123}}
    }
     

     

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习常用模型

&#xff08;原作&#xff1a;MSRA刘铁岩著《分布式机器学习&#xff1a;算法、理论与实践》。这一部分叙述很清晰&#xff0c;适合用于系统整理NN知识&#xff09; 线性模型 线性模型是最简单的&#xff0c;也是最基本的机器学习模型。其数学形式如下&#xff1a;g(X;W)WTX。有…

(转)告别程序员生涯,一点感慨,与诸君共勉

转自&#xff1a;https://blog.csdn.net/phphot/article/details/2230411 再过几天&#xff0c;我就正式告别程序员生涯了&#xff0c;这也是我最后一次以职业程序员身份在CSDN发表文章。小弟谈谈入行几年来的感受&#xff0c;做一个人生阶段的自我总结&#xff0c;同时希望能…

C语言指针与数组之间的恩恩怨怨

很多初学者弄不清指针和数组到底有什么样的关系。我现在就告诉你&#xff1a;他们之间没有任何关系&#xff01;只是他们经常穿着相似的衣服来逗你玩罢了。指针就是指针&#xff0c;指针变量在32 位系统下&#xff0c;永远占4 个byte&#xff0c;其值为某一个内存的地址。指针可…

CentOS7查看开放端口命令

CentOS7查看开放端口命令CentOS7的开放关闭查看端口都是用防火墙来控制的&#xff0c;具体命令如下&#xff1a;查看已经开放的端口&#xff1a;Linux代码 firewall-cmd --list-ports 开启端口Linux代码 firewall-cmd --zonepublic --add-port80/tcp --permanent 命令含义&…

referer参数和addslashes()函数的骚路子

TIPS: 此函数确实是过滤用户输入的&#xff0c;当gpc未开启的时候使用addslashes()函数进行过滤&#xff0c;当开启gpc的时候直接返回&#xff0c;那么问题就来了&#xff0c;当php开启gpc的时候直接返回字符串&#xff0c;但是gpc是只针GET,POST,COOKIE三种超全局变量进行过滤…

MySQL 的各个json 函数说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 如果英文的不方便阅读&#xff0c;请参考个人收录的另一篇中文解说&#xff1a;MySQL中json函数说明和举例 只是为了方便 自己用的时候…

订单编号,递增且不连续(php版)

1、实现方式&#xff0c;使用while循环&#xff0c;比较low&#xff0c;200w条数据 2s public function getMany ($startNum, $count) {$num $startNum;$codes[] $startNum;for($i1;$i<$count;$i){$num1 random_int(1,9);while($num $num1) {$num1 random_int(1,9);}$…

一文搞懂:词法作用域、动态作用域、回调函数、闭包

把以前一直只限于知道&#xff0c;却不清晰理解的这几个概念完完整整地梳理了一番。内容参考自wiki页面&#xff0c;然后加上自己一些理解。 词法作用域和动态作用域 不管什么语言&#xff0c;我们总要学习作用域(或生命周期)的概念&#xff0c;比如常见的称呼&#xff1a;全局…

C语言函数指针

一、函数指针的定义 顾名思义&#xff0c;函数指针就是函数的指针。它是一个指针&#xff0c;指向一个函数。看例子&#xff1a;A)char * (*fun1)(char * p1,char * p2);B)char * *fun2(char * p1,char * p2);C)char * fun3(char * p1,char * p2);看看上面三个表达式分别是什么…

程序员进阶之算法练习:LeetCode专场

欢迎大家前往腾讯云社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由落影发表 前言 LeetCode上的题目是大公司面试常见的算法题&#xff0c;今天的目标是拿下5道算法题&#xff1a; 题目1是基于链表的大数加法&#xff0c;既考察基本数据结构的了解&#xff0c;又考察在…

vim 安装vim-prettier

1、在.vimrc中添加 配置没有安装成功的话 git clone https://github.com/prettier/vim-prettier Plug prettier/vim-prettier, { do: yarn install, for: [javascript, typescript, css, less, scss, json, graphql, markdown, vue, yaml, html, php] } let g:prettier#aut…

详解Mysql中的JSON系列操作函数

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、方法罗列&#xff1a; 分类 函数 描述创建jsonjson_array 创建json数组json_object 创建json对象 json_quote 将json转成json字符串…

WEB/H5性能优化总结

我们今天来说说前端图形渲染优化&#xff0c;因为我接下来的时间可能要开始研究webgl方面的东西&#xff0c;所以就在这里把之前做过的H5做一个总结&#xff0c;现同步发布于GERRY_BLOG&#xff0c;TiMiGerry-知乎&#xff0c;转载请保留链接。静态资源-图片 一 、图片格式JPEG…

C语言数组参数与指针参数

我们都知道参数分为形参和实参。形参是指声明或定义函数时的参数&#xff0c;而实参是在调用函数时主调函数传递过来的实际值。 一、一维数组参数 1、能否向函数传递一个数组&#xff1f;看例子&#xff1a;void fun(char a[10]){char c a[3];}intmain(){char b[10] “abcd…

maven文件结构

pom.xml 用于maven的配置文件 /src 源代码目录 /src/main 工程源代码目录 /src/main/java 工程java源代码目录 /src/main/resource 工程的资源目录 /src/test 单元测试目录 /src/test/java /target 输出目录&#xff0c;所有的输出都存放在这个目录下 /target/classes 编译之…

php如何使用高阶函数

1、首先学会数组转集合的方式 &#xff08;1&#xff09;使用collect函数 $arr [1, 2, 3, 4, 5]; $collect collect($arr); &#xff08;2&#xff09;使用array_map函数 $arr [1, 2, 3, 4, 5]; $collect array_map(function($item){ return $item *…

Git 使用,命令说明

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. D:\ChengXu\git\Git中双击Git Bash启动git窗口。 2. 这条不能放到博客&#xff0c;是我的账号密码。 3. 添加&#xff1a; git add …

2017ACM/ICPC亚洲区沈阳站 C Hdu-6219 Empty Convex Polygons 计算几何 最大空凸包

题面 题意:给你一堆点,求一个最大面积的空凸包,里面没有点. 题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.5或者.0结尾,不用对答案多做处理 1 #include<bits/stdc.h>2 #define N 553 using namespace std;4 struct rec5 {6 double x,y;7 };8 rec…

python读xml文件

# -*- coding:utf-8 -*- import jsonimport requestsimport oscurpathos.path.dirname(os.path.realpath(__file__))xmlpathos.path.join(curpath,read1.xml)with open(xmlpath,encoding"utf-8") as fp: bodyfp.read() print(body)转载于:https://www.cnblogs.…

C语言数组应用

一、数组的内存布局 先看下面的例子&#xff1a;int a[5];所有人都明白这里定义了一个数组&#xff0c;其包含了5 个int 型的数据。我们可以用a[0],a[1]等来访问数组里面的每一个元素&#xff0c;那么这些元素的名字就是a[0],a[1]…吗&#xff1f;看下面的示意图&#xff1a; 如…