【发布时间】:2021-07-31 07:31:50
【问题描述】:
我的应用程序从前端收到一个加密的 json,我在后端对其进行解密,但它的格式如下:
"{\"firstname\":\"JOHN\",\"lastname\":\"DOE\"}"
是的,解密后的 json 上有前导和尾随双引号。
GSON 和对象映射器不起作用,因为它们检测到第一个字符上的引号。
有没有办法在不手动删除封闭引号的情况下正确转换它?
【问题讨论】:
我的应用程序从前端收到一个加密的 json,我在后端对其进行解密,但它的格式如下:
"{\"firstname\":\"JOHN\",\"lastname\":\"DOE\"}"
是的,解密后的 json 上有前导和尾随双引号。
GSON 和对象映射器不起作用,因为它们检测到第一个字符上的引号。
有没有办法在不手动删除封闭引号的情况下正确转换它?
【问题讨论】:
您的数据似乎已被双重编码,因此解决方案是双重解码。具体来说:多亏了反斜杠,这实际上是一个有效的 JSON string 值,它表示一个字符串化的 JSON 对象。因此,如果您要求您的 JSON 库将其解码为 String,您应该得到一个值为
{"firstname":"JOHN","lastname":"DOE"}
然后您可以要求您的 JSON 库将 字符串解码为您真正想要的类型。
【讨论】:
{\"firstname\":\"JOHN\",\"lastname\":\"DOE\"} 我下班了,但我会尝试在输出字符串上再做一次,并用最终解决方案再次更新我会想办法的。
JSONParser 来自哪个库?您提到了 GSON 和 ObjectMapper,似乎都没有包含具有该名称的类,至少没有全大写的 JSON。
String newStr = JsonParser.parseString(oldStr).getAsString(); 的 JsonParser 我现在得到了我需要的格式:{"firstname":"JOHN","lastname":"DOE"}