今天在寫項目時,從redis存取數據時報了json格式與List的轉換異常:
org.json.JSONException: A JSONObject text must begin with '{' at character 1 of {
下面總結一下將ListString轉json存入redis,以及從redis取出json轉回ListString:
一、List<String> 轉json,這里用hutool工具類
List<String> list = new ArrayList<>();
假如存入數據:
list.add("a");
list.add("b");
String json = JSONUtil.toJsonStr(list);
此時的json格式為 ["a","b"],最外層會有一個[ ],里面每個元素都會有" ";
而如果每一個元素是對象的話,則是這樣:
[ { "icon": "/types/ms.png", "updateTime": 1640229871000, "sort": 1, "createTime": 1640175467000, "name": "美食", "id": 1 }, ...... ]
2.String 轉成 List<String>
1.利用hutool工具包里的方法(最簡單的)
List<String> list = JSONUtil.toList(JSONUtil.parseArray(json),ShopType.class);
ps:其中json是從redis取出的JSON轉為String的變量,ShopType.class是要轉的對象的Class
例如:
//將redis緩存取到的字符串轉化為數組,再將數組轉為ShopType類型的list List<ShopType> shopTypeList = JSONUtil.toList(JSONUtil.parseArray(shopTypeStr),ShopType.class);
其他方法:
寫一個工具類,去掉前后的[ ],然后循環去掉每一個字符串的",添加到list里