我在字节缓冲区中有一些 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/