生成二維碼的方法:
由於生成二維碼的參數類型是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轉換爲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包直接調用,簡單無煩惱。