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.pswp.cn/news/450557.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450557.shtml
英文地址,請注明出處:http://en.pswp.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; 如…