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

将Jackjson对象从JSP传递到JavaScript函数,java,javascript,json,Java,Javascript,Json,我在数据库中存储了一个JSON字符串。在我的一个JSP页面中,我检索这个字符串,我希望能够将字符串或JSON对象传递到Javascript函数中。此函数仅用于测试目的 function test(h){ alert(h); } 现在我可以从数据库中检索JSON字符串了,我已经将它打印到屏幕上以确保它得到了它,但是当我像这样传入它时 <input type="button" name="setFontBu

我在数据库中存储了一个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;"/>   
然后把它递进去

onclick="test('<%=widg%>'); return false;"/>
我尝试过使用Stringify,但在这个Jackson JSON对象上似乎不起作用

在所有这些失败之后,我尝试了最后一种方法,从数据库中获取字符串,并用base64对其进行编码。然而,如果我这样做,这也会失败

String test = Base64.encode(theString);
把它传过来。然而,如果我这样做,把它打印到屏幕上,然后复制打印出来的内容,并通过它发送出去,所以我不太明白为什么会这样

有人能告诉我我做错了什么吗。我尝试了很多不同的解决方案,但都没有效果

JSON字符串存储在数据库中,如下所示

        <input  type="button" 
                                name="setFontButton" 
                                value="Set" 
                                class="form_btn_primary"
                                onclick="test('<%=theJSON%>'); return false;"/>   
{ “id”:1, “拆分”:[ { “案文”:[ { “值”:“测试”, “位置X”:3, “地点”:-153, “字体”:{ “类型”:“正常”, “大小”:“中等”, “粗体”:假, “颜色”:“5A5A”, “斜体”:假 } } ] } ] }

如果有人能给我指点方向,我将非常感激

编辑:

如果其他人也有同样的问题,请执行此操作以将JSON从JSP传递到JS函数

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

应该可以正常工作

我认为将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;'
onclick='test(\'\');返回false;'

您可以按照以下步骤操作

  • 去拿琼恩的绳子
  • 使用jackson或任何其他JSON jar文件,将JSON字符串转换为JSON数组,并使用out.println打印字符串
  • 调用打印json字符串的jsp
  • 签入firebug,您将能够看到您的json
  • 如果Json字符串未打印,则Json格式可能存在一些问题
  • 这是一个很好的json美化网站,真的使字符串易于阅读

    谢谢
    Abhi

    您的思路是正确的,必须将其转义,只是从数据库中抓取它,然后使用replaceAll命令将其转义,然后将新字符串传递到javascript中
    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;"
    
    onclick='test(\'<%=theJSON%>\'); return false;'