首页 > 编程语言 >json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava

json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava

时间:2024-09-07 15:13:45浏览次数:7  
标签:Map unescapeJava demo json com import StringEscapeUtils

json字符串转义格式化后再转换处理demo StringEscapeUtils.unescapeJava

报错关键字:

illegal identifier

Expected BEGIN_OBJECT but

Expected name at

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.apache.commons.lang3.StringEscapeUtils;

import java.util.Map;

/**
 * json字符串转义格式化后再转换处理demo
 * 转义的问题。
 * 在读取到这个json字符串之后,发现该字符串中包含了\转义符号,程序自动把它变成了\\\
 * 如果遇到类似的问题,可以直接使用org.apache.commons包下的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);



    }

}

 

标签:Map,unescapeJava,demo,json,com,import,StringEscapeUtils
From: https://www.cnblogs.com/oktokeep/p/18401706

相关文章

  • 响应式单位rpx及搭配UI产品工具和@import导入css样式和scss变量与用法static目录以及p
    1.响应式单位rpx及搭配UI产品工具1.对于rpx的认知和用法以及对于px的区别我们可以去官网先了解一下我们的rpx用法和注意以及与px的区别。链接:页面样式与布局|uni-app官网(dcloud.net.cn)我平时使用的px是我们的屏幕像素的单位,我们在一个页面创建一个view组件,并且给其在......
  • json字符串压缩批处理
    1.调用python库处理json文件运行环境:需要安装python@echooffRem添加chcp65001来改变命令提示符的字符编码,防止中文乱码chcp65001>nulRem鼠标拖动路径:FolderPromptset/p"folder=请拖动json文件夹到这里然后按下回车:"ifnotexist"%folder%"(echo无法找......
  • JS解析JSON数据到TABLE表格
    效果图:  数据采用JSON,[{"时间段":"上午","XX小学班课表":[{"名称":"教师上班","时间":"8:00","星期一":"&......
  • JavaScript 中 structuredClone 和 JSON.parse(JSON.stringify()) 克隆对象的区别
    JavaScript中structuredClone和JSON.parse(JSON.stringify())克隆对象的异同点一、什么是structuredClone?1.structuredClone的发展structuredClone是在ECMAScript2021(ES12)标准中引入的,ECMAScript2021规范正式发布于2021年6月自2022年3月起,该功能适用于最......
  • SpringMVC-05-Json
    1、什么是JSON?JSON:JavaScriptObjectNotation(JS对象描述法)。JSON是一种存储和交换数据的语法。JSON是通过JS对象描述法书写的文本,用字面文本的形式来表示一个JS对象2、为什么要使用JSON?JSON是一种轻量级的数据交换格式,伴随着JavaScript语言的火爆,目前使用特别广泛。......
  • 使用CJson编写多个节点嵌套的程序代码
    CJson(或者更常见的名称可能是cJSON,一个流行的C语言JSON解析库)允许你以程序化的方式处理JSON数据,包括创建、解析、修改和删除JSON对象。这里我将展示如何使用cJSON库来创建一个包含多个嵌套节点的JSON对象。首先,确保你已经安装了cJSON库。如果你使用的是像Ubuntu这样的Linux......
  • 使用vue-json-pretty和vue-json-schema-editor-visual封装一个可视化json数据编辑器及
    一、前言        最近做了一个需求,要求实现可以对json结构进行编辑保存及字段级别的权限管控,结合目前已有的轮子和当前项目的结构,决定使用vue-json-pretty和vue-json-schema-editor-visual来实现效果如下组件支持修改左侧json数据,自动生成右侧树。也支持修改右侧树......
  • 前端常用的echart获取地图json方法
    一、世界地图,不细分国家相关链接:geojson在线绘制 Json文件链接:world-min.json二、世界地图,包含各个国家 Json文件链接:world.json三、中国地图,省市区县(阿里DataV.GeoAtlas)相关链接:阿里DataV.GeoAtlas在线绘制  Json文件链接:china-min.json、china.json修复右手定......
  • lazarus多窗口(delphi的MDI)的demo
    lazarus不支持delphi的mdi模式,经测试可以用ATTabs控件来实现这个功能比较简单。1、安装ATTabs控件(https://github.com/Alexey-T/ATFlatControls/)2、mainformFormCreate的代码:procedureTMainForm.FormCreate(Sender:TObject);begin//默认的是深色,如果需要,可按以下方法设置......
  • MySQL JSON 数据类型
    JSON数据类型是MySQL5.7.8开始支持的。在此之前,只能通过字符类型(CHAR,VARCHAR或TEXT)来保存JSON文档。相对字符类型,原生的JSON类型具有以下优势:在插入时能自动校验文档是否满足JSON格式的要求。优化了存储格式。无需读取整个文档就能快速访问某个元素的值。在JS......