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

时间:2012-04-24 12:10:36

标签: java javascript json

我有一个存储在数据库中的JSON字符串。在我的一个JSP页面中,我检索了这个字符串,我希望能够将String或JSON对象传递给Javascript函数。该功能仅用于测试目的

function test(h){

alert(h);
}

现在我可以从数据库中检索JSON字符串了,我已经将它打印到屏幕上以确保它正在获取它,但是当我像这样传递它时

        <input  type="button" 
                                name="setFontButton" 
                                value="Set" 
                                class="form_btn_primary"
                                onclick="test('<%=theJSON%>'); return false;"/>   

什么都没发生。我用firebug检查出了什么问题,并说它有无效的字符。

所以我尝试传递JSON对象,如此

Widget widg = mapper.readValue(testing.get(0), Widget.class);

然后传入

onclick="test('<%=widg%>'); return false;"/>

现在这将传入而没有错误,它会提醒对象名称,但是我无法解析它。对象的输入类似于存储窗口小部件类的包名称,如此

com.package.mode.Widget@ba8af9 

我尝试使用Stringify,但这似乎不适用于这个Jackson JSON对象。

在失败之后,我尝试了从数据库中获取String并在base64中对其进行编码的最后手段。但是,如果我这样做,这也失败了

String test = Base64.encode(theString);

然后将其传入。但是,如果我这样做,将其打印到屏幕上,然后复制打印出来的内容,然后通过它发送,那么就不太明白为什么会这样。

有人可以告诉我我做错了什么。我尝试了很多不同的解决方案,但没有任何工作。

JSON字符串存储在数据库中,如此

  

{      “ID”:1,      “分裂”:         {            “文本”:               {                  “值”:“测试”,                  “locationX”:3,                  “locationY”: - 153,                  “字体”:{                     “类型”:“普通”,                     “尺寸”:“中”,                     “大胆”:假的,                     “颜色”:“5a5a5a”                     “斜体”:假的                  }               }            ]         }      ]   }

如果有人能指出我的直接指示,我将非常感激!!

编辑:

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

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

允许您传入JSON,

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

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

应该可以正常工作

2 个答案:

答案 0 :(得分: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;'

答案 1 :(得分:0)

您可以按照以下步骤进行操作

  1. 获取jon字符串
  2. 使用jackson或任何其他JSON jar文件,将json字符串转换为json数组并使用out.println打印字符串。
  3. 调用此jsp打印json字符串
  4. 检查萤火虫,你将能够看到你的json。
  5. 如果Json字符串未打印,则json格式可能存在一些问题。
  6. 这是一个很好的json美化网站,http://jsbeautifier.org/,真的让字符串变得简单易读。

    由于 ABHI