java - 如何向我的 JSON 映射器引入转义字符?

标签 java json jackson escaping jackson2

我正在尝试使用com.fasterxml.jackson.databind.ObjectMapper做一件简单的事情。

我有一个对象想要转换为String

class Car{
  String color;
  String brand;

  //... more class info
}

它工作正常,我得到了我的 String ,但结果如下所示:

{"color: "blue", "brand": "toyota" }

是否可以使其看起来像:

{\"color\": \"blue\", \"brand\", \"toyota\" }

我不确定这是否破坏了 JSON 预期格式。

我已经阅读了文档,似乎我可以使用这个:

ObjectMapper().factory.setCharacterEscapes(...)

但我不确定如何传递它或从哪个存储库传递它。有什么想法吗?

最佳答案

使用Jackson生成有效的JSON负载和StringEscapeUtils来逃避它。

示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.text.StringEscapeUtils;

public class EscapeJsonApp {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(new Car("blue", "Toyota"));
        String escapedJson = StringEscapeUtils.escapeJson(json);
        System.out.println(escapedJson);
    }
}

class Car {
    String color;
    String brand;

    // getters, setters, constructor
}

上面的代码打印:

{\"color\":\"blue\",\"brand\":\"Toyota\"}

Maven dependency :

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-text</artifactId>
  <version>1.8</version>
</dependency>

关于java - 如何向我的 JSON 映射器引入转义字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59846351/

相关文章:

java - 防止 opencsv 将引号写入 .csv 文件

javascript - JSON.parse() 特别是运算符

java - 如何获取 Spring 4.1 使用的 Jackson ObjectMapper?

Java Jackson 序列化抽象类列表

java - 如何使用 Jackson ObjectMapper 解析 java 对象的 json 响应

java - 在 hibernate 中使用组合键扩展实体类

java - 我可以使用 FileChooser (javafx) 将序列化对象保存在文件中吗?

java - 在 Apache Tomcat 上运行时出现 FileNotFound 异常?

json - sails .js : compression doesn’t seem to work on json

java - 反序列化 JSON - 嵌套列表和键需要作为值