gpt4 book ai didi

java - Jackson ObjectMapper writeValueAsBytes 方法向已包含反斜杠的字符串添加另一个反斜杠

转载 作者:行者123 更新时间:2023-11-30 06:21:30 24 4
gpt4 key购买 nike

使用 Jacksons 的 ObjectMapper,如果我尝试将已包含反斜杠的字符串转换为字节数组,然后将该字节数组更改回字符串,则输出将包含额外的反斜杠。下面的代码说明了问题

public static void main(String[] args) throws JsonProcessingException, UnsupportedEncodingException {
ObjectMapper mapper = new ObjectMapper();
Map<String, String> data = new HashMap<>();
data.put("id", "Test\\String");

//output: data[id] that has single backslash: Test\String
System.out.println("data[id] that has single backslash: " + data.get("id"));

byte[] dataInBytes = mapper.writeValueAsBytes(data);
//output: data in bytes that contains double backslash: {"id":"Test\\String"}
System.out.println("data in bytes that contains double backslash: " + new String(dataInBytes, "UTF-8"));
}

是否有一种方法可以配置 ObjectMapper,以便 mapper#writeValueAsBytes 方法不会将字符串 Test\String 更改为 Test\\String?有没有其他方法使用 Jackson/ObjectMapper 来完成此任务?

提前致谢!!

最佳答案

这是有效的行为。输出有转义反斜杠。在 JSON 中,必须转义反斜杠。

换句话说,{"id":"Test\String"} 不是有效的 JSON。

检查this对于必须在 JSON 中转义的其他字符。

关于java - Jackson ObjectMapper writeValueAsBytes 方法向已包含反斜杠的字符串添加另一个反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com