2013-02-08 71 views
2

我在我的JSP1.jsp中有一個名爲jsonArray的JavaScript JSON數組[array [String]]。將JSON數組[數組[String]]轉換爲Java數組

我將jsonArray轉換爲字符串jsonArrayStr使用JSON.stringify(jsonArray)JSP1.jsp

我傳遞jsonArrayStr作爲參數調用,同時另一個JSP JSP2.jsp這way-

"JSP2.do?jsonArrayStr="+jsonArrayStr 

JSP2.jsp,我做這個 -

String jsonArrayStr = request.getParameter("jsonArrayStr"); 

現在我該怎樣轉換jsonArrayStr的Java arrayJSP2.jsp不包含任何JavaScript代碼)

總結 -

我有一個JSP1.jsp一個JavaScript JSON陣列,這是我想訪問作爲JSP2.jsp一個正常的Java數組/數組列表。我如何實現這一目標?

+0

你是從一維數組還是二維數組開始的?你的數組只包含字符串,還是包含包含字符串的數組? JSON.stringify()在線的一維陣列上看起來像: [ 「一」, 「B」, 「C」, 「X」, 「Y」, 「Z」] JSON.stringify( )看起來像一個二維數組: [[「a」,「b」,「c」],[「x」],[「y」,「z」]] – sdouglass

+0

它看起來像'[[ [「a」,「b」,「c」],[「x」],[「y」,「z」]] – AlwaysALearner

+0

@ user1649068你想從jsonarray創建一個java對象數組? – Parvathy

回答

1

OK,所以你必須表示爲存儲在Java字符串這樣的JSON字符串的二維數組:

[["a", "b", "c"],["x"],["y","z"]] 

你需要以某種方式解析或將該值反序列化爲Java String [] []。您可以使用類似於http://www.json.org/java/index.htmlhttp://jackson.codehaus.org/的庫,或者您可以嘗試手動執行此操作。手動可能會有點棘手,但不是不可能的。 json.org庫非常簡單,可能已經足夠好了。代碼會是這樣的(我還沒有試過/測試過):

JSONArray jsonArray = new JSONArray(jsonArrayStr); // JSONArray is from the json.org library 
String[][] arrayOfArrays = new String[jsonArray.length()][]; 
for (int i = 0; i < jsonArray.length(); i++) { 
    JSONArray innerJsonArray = (JSONArray) jsonArray.get(i); 
    String[] stringArray = new String[innerJsonArray.length()]; 
    for (int j = 0; j < innerJsonArray.length(); j++) { 
     stringArray[j] = innerJsonArray.get(j); 
    } 
    arrayOfArrays[i] = stringArray; 
} 
0

somethingk這樣

ArrayList<String> strings= new ArrayList<String>();  
JSONArray jsonArray = (JSONArray)jsonObject; 
if (jsonArray != null) { 
    int len = jsonArray.length(); 
    for (int i=0;i<len;i++){ 
    list.add(jsonArray.get(i).toString()); 
    } 
} 

String[] Stringarray = strings.toArray(new String[strings.size()]); 
+0

根據我的問題,這裏是什麼JSONObject? 'jsonArray'或'jsonArrayStr'? – AlwaysALearner

+0

'jsonArray' ... – TheWhiteRabbit

+0

所以,你的意思是說我沒有必要'stringify()'json對象嗎?我將能夠跨JSP頁面直接訪問JSONobject而不通過它們? – AlwaysALearner