问题点
- 问题描述:
当我们拿到的一串看是是json格式的字符串时,我们肯定会毫不犹豫的做JSON.parse()操作,
转化成javaBean对象。
但是,当我们拿到的json格式的字符串的字符串时,是不是可以这样做呢?
比如:下面的案例
- javaBean 对象
@Data
public static class User {
private Integer id;
private String name;
private String address;
}
- json ‘格式’的字符串
{\"address\":\"zhejiang hangzhou\",\"id\":\"001\",\"name\":\"John\"}
- 用阿里的fastjson进行json转化发现会报错:
对比正确的json字符串转对象的正确姿势可以发现
- 正确的json字符串
{"address":"zhejiang hangzhou","id":"001","name":"John"}
发现 上面转化的json格式字符串的每一个"都带有一个
所以,需要我们进行脱 \ 操作,以下附上我们的解决方案:
- 添加依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.8</version>
</dependency>
- 脱 \ 处理
String jsonStr = "{\\\"address\\\":\\\"zhejiang hangzhou\\\",\\\"id\\\":\\\"001\\\",\\\"name\\\":\\\"John\\\"}";
jsonStr = StringEscapeUtils.escapeJson(jsonStr);
// 此时JSON.parseObject就可以正常进行javaBean的转化操作了
User user1 = JSON.parseObject(jsonStr,User.class);
以上,就是本次的分享。
要是有帮助,请点个👍,谢谢!