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里

 

posted @   阿高在学习  阅读(2262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库
点击右上角即可分享
微信分享提示