2009-05-06 93 views
1

我有一個從瀏覽器發送到jsp頁面的JSON對象。如何接收該對象並在jsp.Do中處理它我需要任何特定的解析器?我已經使用了下面這段代碼。但它不起作用。實質上,我應該讀取對象的內容並將它們打印在jsp中。在jsp中處理json對象

<%@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循環是不完整的。

我建議尋找可用於Java的各種JSON庫並使用其中之一。

爲了幫助您入門,我會看一些decodingsamples

0

通常,您不會在查詢參數中傳遞JSON - 需要太多引用。相反,你應該使用JSON作爲有效負載(內容類型'application/json')等。

但除此之外,您需要一個json解析器; Json.org列出噸;我最喜歡的是Jackson,它可以像jsp一樣從頁面調用大多數的替代方法。

+0

妳的權利..值就像你說的貼..但我不知道如何接受它,並在JSP程序吧.. – user98534 2009-05-07 08:28:24

+0

的request.getParameter是讓你有效載荷的正確途徑。然後,您需要使用json解析器將有效負載解析爲JSONObject。 – 2009-05-07 13:07:37

1

可以分析輸入串JSONValue,然後將它轉換爲下面

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

我首選的方案示出了這個問題JSONOject像使用JSON解析器,它提供了實現java.util中的輸出包括.Map和java.util.List接口。這允許在JSP表達式語言中簡單解析JSON結構。

以下是使用Apache Wink提供的JSON4J的示例。該示例從URL中導入JSON數據,並在java scriptlet中解析並瀏覽生成的結構。

<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 scriplet。

<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}