【问题标题】:How to get rid of ' characters in JSON Serialization?如何摆脱 JSON 序列化中的 ' 字符?
【发布时间】:2020-05-21 19:47:07
【问题描述】:

我想使用 Jackson 序列化一个对象。 这是json:

[
    {
        "texte": "Quel sont les trois grands principes de la POO ?",
        "topic": "Java",
        "reponses": [
            {
                "texte": "L\\'encapsulation, l\\'héritage et le polymorphisme.",
                "isTrue": true
            },
            {
                "texte": "L\\'encapsulation, l\\'héritage multiple et le polymorphisme.",
                "isTrue": false
            },
            {
                "texte": "Le multi-threading, l\\'accès aux données et le polymorphisme.",
                "isTrue": false
            }
        ]
    },
    {
        "texte": "Quel interface implémente la classe ArrayList ?",
        "topic": "Java",
        "reponses": [
            {
                "texte": "List",
                "isTrue": true
            },
            {
                "texte": "Queue",
                "isTrue": false
            },
            {
                "texte": "Serializable",
                "isTrue": false
            }
        ]
    }
]

这是 Java 代码:

public static void main(String[] args) throws IOException {
        FileReader reader = new FileReader();
        File jsonFile = reader.getFile("questions/datas.json");

        ObjectMapper mapper = new ObjectMapper();
        
        List<Question> questions = mapper.reader()
                  .forType(new TypeReference<List<Question>>() {})
                  .readValue(jsonFile);
        
        System.out.println(questions);

    }

最后我有这个错误:

[来源:

处的 UTF-8 中间字节 0x72 无效

C:\Users\josselin.douineau\projects\quizz-java-generator\target\classes\questions\datas.json; 行:7,列:41](通过参考链: java.util.ArrayList[0]->com.douineau.entity.Question["reponses"]->java.util.ArrayList[0]-com.douineau.entity.Reponse["texte"])

有人知道这是什么吗? 我不是 IT 部门的,所以我不太理解这种类型的信息。

【问题讨论】:

    标签: java json parsing serialization jackson


    【解决方案1】:

    错误是由l\\'héritage et 中的转义字符\\' 引起的。您可以配置对象映射器以允许转义字符。

    ObjectMapper mapper = new ObjectMapper();
    mapper.configure(JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true);
    

    【讨论】:

    • 这是 enconding 问题,我的文件设置为 cp1252。它在没有 JsonParser 选项的情况下工作。
    猜你喜欢
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2011-05-11
    • 2022-01-16
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多