今天在寫項目時,從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里
