将 Jackjson JSON 对象从 JSP 传递到 JavaScript 函数

Passing Jackjson JSON object from JSP to JavaScript function

本文关键字:JavaScript 函数 JSP Jackjson JSON 对象      更新时间:2023-09-26

我有一个存储在数据库中的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, "拆分":[ { "文本":[ { "值":"测试", "位置X":3, "位置Y":-153, "字体":{ "类型":"正常", "大小":"中", "粗体":假, "颜色":"5a5a5a", "斜体":假 } } ] } ] }

如果有人能指出我直接的方向,将不胜感激!

编辑:

如果其他人有同样的问题,请这样做将JSON从JSP传递到JS函数

<%=theJSON.replaceAll("'"", "''''")%>

这允许您传入 JSON,

然后将其以JavaScript格式恢复为正常的JSON格式

theJSON = theJSON.replace(/'/g,'"');

应该工作正常

我认为包装 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='test(''<%=theJSON%>''); return false;'
您可以

按照以下步骤操作

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

这是一个很好的json美化网站,http://jsbeautifier.org/,真的让字符串变得简单易读。

谢谢阿比