Java 弹簧脱离已脱离的字符串
所以我在数据库中保存了这个字符串:Java 弹簧脱离已脱离的字符串,java,json,spring,jackson,Java,Json,Spring,Jackson,所以我在数据库中保存了这个字符串: {\"facebook\":\"fb.com\",\"twitter\":\"twitter.com\",\"instagram\":\"\",\"googlePlus\":\"\",\"others\":\"espn.com\"} 但是当我调用getAPI时,我得到的是JSON {\\\"facebook\\\":\\\"fb.com\\\",\\\"twitter\\\":\\\"twitter.com\\\",\\\"instagram\\\":\\\
{\"facebook\":\"fb.com\",\"twitter\":\"twitter.com\",\"instagram\":\"\",\"googlePlus\":\"\",\"others\":\"espn.com\"}
但是当我调用getAPI时,我得到的是JSON
{\\\"facebook\\\":\\\"fb.com\\\",\\\"twitter\\\":\\\"twitter.com\\\",\\\"instagram\\\":\\\"\\\",\\\"googlePlus\\\":\\\"\\\",\\\"others\\\":\\\"espn.com\\\"}
为什么会发生这种情况?我如何才能获得存储在数据库中的完全相同的数据?当您检索数据时,它会再次转义,因为Spring认为
\
字符是数据的一部分,不用于转义“
您永远不想存储转义字符(无论是JSON特殊字符、文本中的HTML字符等),您必须存储未转义的数据来解决问题。转义必须在显示数据时完成,而不是在存储数据时完成
存储转义数据是一种不好的做法,因为您遇到了问题,但也因为它会占用数据库中无用的存储空间(目前对您来说可能不是问题,但会有数百万行)。获取数据后,将其保存在
字符串中,然后:
String newJava = str.replace("\\\", "\");
您还可以使用apache的内置StringEscapeUtils.unescapeJson(字符串输入)
机制获取Json数据。请参阅参考在将字符串保存到数据库之前,我正在使用它来取消字符串的扫描。