我有一个存储在数据库中的 JSON 字符串。在我的一个 JSP 页面中,我检索了这个字符串,并且我希望能够将字符串或 JSON 对象传递给 Javascript 函数。该功能只是用于测试目的
function test(h){
alert(h);
}
现在我可以很好地从数据库中检索 JSON 字符串,我已经将它打印到屏幕上以确保它得到它,但是当我像这样传递它时
<input type="button"
name="setFontButton"
value="Set"
class="form_btn_primary"
onclick="test('<%=theJSON%>'); return false;"/>
没发生什么事。我用萤火虫检查出了什么问题,它说有无效字符。
所以我然后尝试像这样传递JSON对象
Widget widg = mapper.readValue(testing.get(0), Widget.class);
然后传入
onclick="test('<%=widg%>'); return false;"/>
现在这将在没有错误的情况下传递,并且它会提醒对象名称,但是我无法解析它。对象与存储小部件类的包名称类似,如下所示
com.package.mode.Widget@ba8af9
我尝试使用 Stringify,但这似乎不适用于此 Jackson JSON 对象。
在这一切都失败之后,我尝试了从数据库中获取字符串并将其编码为 base64 的最后手段。但是,如果我这样做,这也会失败
String test = Base64.encode(theString);
并将其传递进去。但是,如果我这样做,将其打印到屏幕上,然后复制打印出来的内容,然后通过它发送它,所以不太明白为什么会这样。
所以有人可以告诉我我做错了什么。我尝试了很多不同的解决方案,但没有任何效果。
JSON字符串像这样存储在数据库中
{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"正常”,“大小”:“中”,“粗体”:false,“颜色”:“5a5a5a”,“斜体”:false } } ] } ] }
如果有人能指出我的直接方向,将不胜感激!
编辑:
如果其他人有同样的问题,请执行此操作以将 JSON 从 JSP 传递到 JS 函数
<%=theJSON.replaceAll("\"", "\\\'")%>
这允许您传入 JSON,
然后用 JavaScript 将其恢复为正常的 JSON 格式
theJSON = theJSON.replace(/'/g,'"');
应该可以正常工作