首页 > 解决方案 > 有没有更好的方法在 Java 中使用转义字符和双引号构建以下字符串?

问题描述

我有下面的字符串,其中包含转义字符。

{"Employee": "{\"Id\":\"1234\",\"isReady\":true}"}

有一个消息发布服务,它要求使用转义字符和双引号以完全相同的方式发布字符串。目前我正在下面显示的方法中构建上面的字符串。

    String beginning = "{\"Employee\": \"";
    String needToFormat = "{\"Id\":\"1234\",\"isReady\"";
    String end = ":true}\"}";
    String formatted = needToFormat.replaceAll("\"", "\\\\\"");
    String finalOutput = beginning + formatted + end;

有一个更好的方法吗?由于限制,我无法使用 Apache 公共库。对于使用 Java 内置字符串方法或 Jackson Json 构建此功能的其他方法,我们将不胜感激。

标签: javajsonstringjava-8formatting

解决方案


要正确安全地执行此操作,首先将具有属性“Id”和“isReady”的对象序列化为 JSON。然后使用该 JSON 字符串作为“Employee”字段的值。

与杰克逊:

private static final ObjectMapper mapper = new ObjectMapper();

public static String employeeToJson(String id, boolean ready) throws IOException {
    String innerJson = mapper.writeValueAsString(Map.of(
        "Id", id,
        "isReady", ready));
    return mapper.writeValueAsString(Map.of("Employee", innerJson));
}

推荐阅读