2012-04-24 5 views
0

У меня есть строка JSON, хранящаяся в базе данных. На одной из моих страниц JSP я извлекаю эту строку, и я хочу, чтобы передать объект String или JSON в функцию Javascript. Функция просто это для целей тестированияПередача объекта Jackjson JSON от JSP к функции 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;"/> 

Теперь это будет проходить в без ошибок, и он предупреждает имя объекта, однако Я не могу разобрать его. Объект приходит как с именем пакета, где класс виджета хранится как так

[email protected] 

Я попытался с помощью Stringify, но это не похоже на работу на этом объекте Джексон JSON.

После того, как все это не удалось, я попробовал последний способ взять строку из базы данных и закодировать ее в base64. Тем не менее, это тоже не работает, если я делаю это

String test = Base64.encode(theString); 

и передать. Однако, если я сделаю это, распечатать его на экран, а затем скопировать то, что печатается, и отправить, что через него работает, так что дон Понятно, почему это так.

Так может кто-то, пожалуйста, скажите мне, что я делаю неправильно. Я пробовал много разных решений, и ничего не работает.

JSON строка хранится в базе данных, как этот

{ "ID": 1, "шпагат": [ { "тексты": [ { "значение": "Тест " "locationX": 3, "locationY": - 153, "шрифт": { "типа": "Нормальный", "размер": "Medium", "жирный": ложь, " цвет ":" 5a5a5a ", "Курсив": ложные }} ] } ] }

Был бы очень признателен, если кто-то может мне точку в прямом направлении !!

Edit:

Incase кто-то есть такая же проблема сделать это, чтобы передать JSON из JSP функции JS

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

Это позволяет передать JSON в,

затем верните его на JavaScript в обычный формат JSON

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

Должен работать нормально

ответ

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;' 
+0

Вы были в правильном направлении, пришлось бежать, просто схватил его из базы данных затем бежал его с помощью команды replaceAll, а затем передал новую строку в JavaScript – AdamM

0

Вы можете выполнить следующие шаги

  1. Извлекает строку Йон
  2. Использование Джексону или любой другой банку файл в формате JSON, конвертировать строку JSON в массив JSON и напечатайте строку, используя out.println.
  3. Назовите этот jsp, который печатает строку json
  4. Проверьте в firebug, вы сможете увидеть свой json.
  5. Если строка Json не печатается, могут возникнуть некоторые проблемы в вашем json формате.

Это хороший сайт для украшений json, http://jsbeautifier.org/, действительно делает строку простой для чтения.

Благодаря Аби

Смежные вопросы