簡體   English   中英

將Jackjson JSON對象從JSP傳遞給JavaScript函數

[英]Passing Jackjson JSON object from JSP to JavaScript function

我有一個存儲在數據庫中的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,“split”:[{“texts”:[{“value”:“Test”,“locationX”:3,“locationY”: - 153,“font”:{“type”:“正常“,”大小“:”中“,”粗體“:false,”顏色“:”5a5a5a“,”斜體“:false}}]}]}

如果有人能指出我的方向,我將非常感激!

編輯:

如果其他人有同樣的問題,請將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指定為:

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/ ,真的讓字符串變得簡單易讀。

謝謝阿比

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM