【问题标题】:how to decode symbols from json string while converting to Java Object in Springboot如何在 Spring Boot 中转换为 Java 对象时从 json 字符串中解码符号
【发布时间】:2022-11-04 10:58:22
【问题描述】:

我有以下格式的 Json 字符串:

{"id":"12345","category":"Bed \u0026 Bath@\u003eBathroom Accessories \u0026 Organization@\u003eCountertop Bath Accessories@\u003e"}

预期输出:SampleDTO:

{"id":"12345","category":"Bed & Bath@>Bathroom Accessories & Organization@>Countertop Bath Accessories@>"}

当我将 json 字符串转换为 JsonObject 时,我得到了预期的输出,但是如果我将 json 字符串转换为 SampleDTO 对象的 unicode 值,则不会用符号替换。

尝试了以下方法将 jsonString 转换为 SampleDTO :

 Gson gson = new Gson();

        return gson.fromJson(JsonObject,SampleDTO.class);

or      return gson.fromJson(JsonString,SampleDTO.class);

【问题讨论】:

    标签: java json string spring-boot encode


    【解决方案1】:

    我认为您的问题与json无关。你只需要对字符串进行转义。尝试使用StringEscapeUtils.unescapeJava

    这是我的例子

    public static void main(String[] args) {
        String s = "{"id":"12345","category":"Bed \u0026 Bath@\u003eBathroom Accessories \u0026 Organization@\u003eCountertop Bath Accessories@\u003e"}";
        String s1 = StringEscapeUtils.unescapeJava(s);
        Gson gson = new Gson();
        Sample sample = gson.fromJson(s1, Sample.class);
        System.out.println(sample.getCategory());
    }
    
    @Data
    static class Sample {
        String id;
        String category;
    }
    

    【讨论】:

    • 嗨@Otto 感谢您的回复,在使用此 StringEscapeUtils.unescapeJava(jsonString) 并转换为 json 后,我们得到了无效的 json 格式并面临异常:com.google.gson.JsonSyntaxException
    • 真的吗?如何?我做了一些测试。好像没问题。我认为你应该提供更多细节。 Likee,您如何编写 SampleDTO。
    猜你喜欢
    • 2022-01-13
    • 2020-05-04
    • 1970-01-01
    • 2014-09-04
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 2019-06-03
    相关资源
    最近更新 更多