【发布时间】:2018-02-23 06:06:57
【问题描述】:
我在字节缓冲区中有一些 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 但得到了相同的结果。
【问题讨论】:
-
So, when I try to convert this string to JSON object... 请向我们展示您使用带有转义双引号的字符串的代码。 -
字符串 print as
{"ID":101}不应该是有效的 JSON 吗? -
这不是 JSON
-
@TimBiegeleisen 我正在使用此语句将字符串转换为 JSON:JSONObject json = new JSONObject(rawJson);
-
@Carlos:我希望它打印为 {"ID":101} 但我不知道为什么要添加“/”
标签: java string bytebuffer