A JSONObject text must begin with '{' at 1 [character 2 line 1],将ListString转json(存入redis),json转回ListString
今天在写项目时,从redis存取数据时报了json格式与List的转换异常:
1 | 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"],最外层会有一个[ ],里面每个元素都会有" ";
而如果每一个元素是对象的话,则是这样:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | [ { "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
例如:
1 2 | //将redis缓存取到的字符串转化为数组,再将数组转为ShopType类型的list List<ShopType> shopTypeList = JSONUtil.toList(JSONUtil.parseArray(shopTypeStr),ShopType. class ); |
其他方法:
写一个工具类,去掉前后的[ ],然后循环去掉每一个字符串的",添加到list里
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库