Java - '\' 未用于转义字符串中的双引号“

标签 java string bytebuffer

我在字节缓冲区中有一些 JSON 内容:{\"ID\":101}"}

此内容是从服务调用返回的。我从字节缓冲区中的微服务获得结果。 (这意味着 - 我无法更改内容)

现在,我需要从此缓冲区获取 json 对象。我正在使用这段代码:

            ByteBuffer payloadByteBuffer = invokeResult.getPayload();
            byte[] payloadByteArray = payloadByteBuffer.array();
            rawJson = new String(payloadByteArray, Charset.forName("UTF-8"));
            System.out.println("Raw JSon result = "+rawJson);

打印的字符串是:“{\”ID\“:101}”

请注意,“\”在字符串中打印,但它最初用于转义双引号。因此,当我尝试将此字符串转换为 JSON 对象时,出现错误:

“1 [字符 2 第 1 行] 处缺少值”

这可能是由于 '\' 没有被用来转义双引号字符(我认为)。

所以,我的问题是,如何修改我的字符串以正确处理“\”字符?

我尝试替换“\”。但没有成功。我不知道为什么。 我还尝试了不同的字符集编码:US-ASCII 和 ASCII,但得到了相同的结果。

最佳答案

您可以尝试json-simple。您可以使用 here 中的依赖项

P.S:您的 JSON 响应是错误的。

ByteBuffer payloadByteBuffer = invokeResult.getPayload();
byte[] payloadByteArray = payloadByteBuffer.array();
rawJson = new String(payloadByteArray, Charset.forName("UTF-8"));

JSONParser parser = new JSONParser();
try {
        JSONObject json = (JSONObject) parser.parse(rawJson);
} catch (ParseException e) {
    e.printStackTrace();
}

它解析其中包含 \JSON

关于Java - '\' 未用于转义字符串中的双引号“,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48942107/

相关文章:

java - 无法读取文件的第一行

python - 如何用参数填充正则表达式字符串

java - 字节缓冲区和字节数组

VB.NET - 空字符串

c++ - .size() 字符串操作不读取字符的实际长度/大小 c++

java - 在java中将两个字节转换为有符号整数

android - 为什么我们在 OpenGL (ES) android 中以字节为单位分配 block 而不是 float ,尽管我们大部分时间都使用 float

java - @EnableSpringConfigured 导入

java - 如何在 Java 中获取 Windows 的 %APPDATA% 位置变量的值?

java - Spring动态注入(inject),类工厂模式