admin管理员组文章数量:1487745
json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava
json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava
报错关键字:
illegal identifier
Expected BEGIN_OBJECT but
Expected name at
代码语言:javascript代码运行次数:0运行复制package com.example.core.mydemo;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;
import org.apachemons.lang3.StringEscapeUtils;
import java.util.Map;
/**
* json字符串转义格式化后再转换处理demo
* 转义的问题。
* 在读取到这个json字符串之后,发现该字符串中包含了\转义符号,程序自动把它变成了\\\
* 如果遇到类似的问题,可以直接使用org.apachemons包下的StringEscapeUtils类,先去掉转义,再反序列化,这样可以快速解决问题。
*
*/
public class json6 {
public static void main(String[] args) {
String json = "{\\\"accountNonExpired\\\":true,\\\"accountNonLocked\\\":true,\\\"authorities\\\":[{\\\"authority\\\":\\\"admin\\\"}],\\\"credentialsNonExpired\\\":true,\\\"enabled\\\":true,\\\"id\\\":13,\\\"password\\\":\\\"$2a$10$o3XfeGr0SHStAwLuJRW6y.kE0UTerQfv3SXrAcVLuJ6M3hEsC9RKe\\\",\\\"roles\\\":[\\\"admin\\\"],\\\"username\\\":\\\"admin\\\"}";
//case1 fastjson
// Map map = JSON.parseObject(json, Map.class);
/**
* 报错信息:com.alibaba.fastjson.JSONException: illegal identifier : \pos 1, line 1, column 2
*/
// System.out.println("map="+map);
//转换成功
// json = StringEscapeUtils.unescapeJava(json);
// Map map2 = JSON.parseObject(json, Map.class);
// System.out.println("map2="+map2);
//case2 jackson
// ObjectMapper objectMapper = new ObjectMapper();
// try {
//
//加上这行,不报错。
// json = StringEscapeUtils.unescapeJava(json);
//
// Map map = objectMapper.readValue(json, Map.class);
// /**
// * 报错信息:com.fasterxml.jackson.core.JsonParseException: Unexpected character ('\' (code 92)): was expecting double-quote to start field name
// */
// System.out.println("map="+map);
// } catch (JsonProcessingException e) {
// e.printStackTrace();
// }
//case3 gson
json = StringEscapeUtils.unescapeJava(json);
Map map3 = new Gson().fromJson(json, Map.class);
/**
* 报错信息:com.google.gson.stream.MalformedJsonException: Expected name at line 1 column 2 path $.
*/
System.out.println("map3="+map3);
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-09-07,如有侵权请联系 cloudcommunity@tencent 删除程序序列化字符串jsonmap本文标签: json字符串转义格式化后再转换处理demo StringEscapeUtilsunescapeJava
版权声明:本文标题:json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/shuma/1754967565a3181823.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论