2009-05-06 2 views
1

У меня есть объект JSON, отправленный из браузера на страницу jsp. Как получить этот объект и обработать его в jsp.Do Мне нужны какие-либо конкретные парсеры? Я использовал следующий фрагмент кода. Но это не сработает. Возможно, я должен прочитать содержимое объекта и напечатать его в jsp.Обработка json объектов в jsp

<%@page language="java" import="jso.JSONObject"%> 

<% 
JSONObject inp=request.getParameter("param1"); 
%> 

<% for(int i=0;i<inp.size();i++) 
{%> 
    <%=inp.getString(i)%> 
<% 
} 
%> 

ответ

0

У вас есть несколько синтаксических ошибок в вашем примере кода.

Во-первых, request.getParameter возвращает строку, поэтому установка его в JSONObject не будет работать. Во-вторых, ваш цикл for является неполным.

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

Чтобы помочь вам начать работу, я бы посмотрел на некоторые decodingsamples.

0

В общем, вы не будете передавать JSON в параметрах запроса - слишком много цитирования необходимо. Скорее, вы должны использовать POST с JSON в качестве полезной нагрузки (тип контента «application/json») или такой.

Но помимо этого вам нужен синтаксический анализатор json; Json.org перечисляет тонны; моим фаворитом является Jackson, который, как и большинство альтернатив со страницы, также можно вызвать из jsp.

+0

у правы .. значение публикуется, как вы говорите .. но я не уверен, как получить и обработать его в СПЯ .. – user98534

+0

request.getParameter это правильный путь, чтобы получить полезную нагрузку. Затем вам нужно использовать синтаксический анализатор json для анализа полезной нагрузки в JSONObject. –

1

Вы можете разобрать строку ввода, чтобы JSONValue, а затем привести его к JSONOject как, как показано ниже

JSONObject inp = (JSONObject) JSONValue.parse(request.getParameter("param1")); 
2

Мой предпочтительным решением этой проблемы заключается в использовании JSON синтаксический анализатор, который обеспечивает выходной сигнал, который реализует java.util Интерфейс .Map и java.util.List. Это позволяет просто проанализировать структуру JSON на языке выражения JSP.

Вот пример использования JSON4J с Apache Wink. Образец импортирует данные JSON из URL-адреса, анализирует его в сценарии Java и просматривает результирующую структуру.

<c:import var="dataJson" url="http://localhost/request.json"/> 
<% 
String json = (String)pageContext.getAttribute("dataJson"); 
pageContext.setAttribute("parsedJSON", org.apache.commons.json.JSON.parse(json)); 
%> 
Fetch the name of the node at index 1 : ${parsedJSON.node[1].name} 

Чтобы сделать это чистый, было бы предпочтительнее, чтобы создать JSTL тег, чтобы сделать синтаксический анализ и избежать Java скриптлета.

<c:import var="dataJson" url="http://localhost/request.json"/> 
<json:parse json="${dataJson}" var="parsedJSON" /> 
Fetch the name of the node at index 1 : ${parsedJSON.node[1].name} 
+0

Эй Стив! как и для <% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c"%>, Что такое taglib uri для JSON4J? – CodeBurner

+0

Я не знаю о существующем. Я должен был создать свою собственную, которая не слишком сложна, учитывая, что код выше всего 2 строки. –

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