0

我有一个存储在数据库中的 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,'"');

应该可以正常工作

4

2 回答 2

2

我认为包裹 onclick 的双引号和 JSON 中的双引号的组合可能会让您感到困惑。把它想象成你手动输入了 JSON —— 它看起来像这样:

onclick="test('{ "id":1, "splits":[ { "texts":[ { "value":"Test", "locationX":3, "locationY":-153, "font":{ "type":"Normal", "size":"Medium", "bold":false, "colour":"5a5a5a", "italics":false } } ] } ] }'); return false;"

并且之前打开的双引号id实际上将关闭后面的双引号onclick=(您应该能够通过查看页面源来验证这一点)。尝试将 onclick 指定为:

onclick='test(\'<%=theJSON%>\'); return false;'
于 2012-04-24T14:17:51.390 回答
0

您可以按照以下步骤

  1. 获取乔恩字符串
  2. 使用 jackson 或任何其他 JSON jar 文件,将 json 字符串转换为 json 数组并使用 out.println 打印字符串。
  3. 调用这个打印json字符串的jsp
  4. 签入萤火虫,您将能够看到您的 json 。
  5. 如果 Json 字符串不打印,则您的 json 格式可能存在一些问题。

这是一个很好的 json 美化网站,http://jsbeautifier.org/,确实使字符串易于阅读。

谢谢阿比

于 2012-04-24T17:15:17.453 回答