状況があります。多数の配列を含む通常の JavaScript 配列を作成しています。JavaScriptを完全に使用しているため、request.setAttribute()
使用できません。そのJSON.stringify(<array>)
ため、文字列をパラメーターとして URL に渡します。これは、通常の JavaScript 配列にデータを入力する方法です。
var arrayOfArrays = new Array();
for(var i=0;i<agent.length;i++){
var arrayOfStrings = new Array();
arrayOfStrings[0] = agent[i].comp;
arrayOfStrings[1] = agent[i].ip;
arrayOfStrings[2] = agent[i].port;
arrayOfStrings[3] = agent[i].username;
arrayOfStrings[4] = agent[i].password;
arrayOfArrays[i] = arrayOfStrings;
}
var agents = JSON.stringify(arrayOfArrays);
// and I'm passing the agents variable as a parameter to a URL.
2 番目のページでは、パッケージのクラスとメソッドを使用して文字列化された値を取得し、request.getParameter()
それを Java に変換しようとしており、ロジックを続行しています。array
net.sf.json
以下は、私が作成した配列の配列で、次の形式です[[...],[...],[...], . . ]
-
"[[\"hari2\", \"2.2.2.2\", \"222\", \"2gsz3dg\", \"sdfg2sd3\"], [\"fhf\", \"1.4.5.6\", \"678\", \"gjh\", \"gfhjgf\"], [\"hari1\", \"1.1.1.1\", \"123\", \"sdfg\", \"w34tr5\"], [\"ch\", \"1.1.1.1\", \"123\", \"ghf\", \"dgjyt\"], [\"hari\", \"1.2.3.4\", \"324\", \"xcfhd\", \"serteg34g\"], [\"hari5\", \"5.5.5.5\", \"555\", \"555\", \"555\"], [\"hari4\", \"4.4.4.4\", \"444\", \"444\", \"444\"], [\"hari3\", \"3.3.3.3\", \"333\", \"sfse\", \"3rw\"], [\"hari6\", \"6.6.6.6\", \"666\", \"666\", \"666\"]]"
文字列から配列に変換するための私のロジックは次のとおりです-
String agents = request.getParameter("agents");
System.out.println("Agents before removing \" :: " + agents);
if (agents.startsWith("\"") && agents.endsWith("\"")) {
String agentsTemp = agents.replaceFirst("\"", "");
agents = agentsTemp.substring(0, agentsTemp.length()-1);
System.out.println("Agents after removing \" :: " + agents);
}
// applied the above logic as i had got "Invalid JSON String" Exception
if(agents != null && agents.length() > 2) {
net.sf.json.JSONArray arrayOfArrays = (net.sf.json.JSONArray) net.sf.json.JSONSerializer.toJSON(agents);
for(int i=0; i<arrayOfArrays.size();i++) {
net.sf.json.JSONArray arrayOfStrings = (net.sf.json.JSONArray) arrayOfArrays.get(i);
String pgData = arrayOfStrings.getString(0);
String user = arrayOfStrings.getString(3);
String pwd = arrayOfStrings.getString(4);
int portInt = Integer.parseInt(arrayOfStrings.getString(2));
String hostIP = arrayOfStrings.getString(1);
// business logic continued
}
} else {
// throw exception
}
net.sf.json.JSONException: Missing value. at character 2 of [[\"hari2\", \"2.2.2.2\", \"222\", \"2gsz3dg\", \"sdfg2sd3\"], [\"fhf\", \"1.4.5.6\", \"678\", \"gjh\", \"gfhjgf\"], [\"hari1\", \"1.1.1.1\", \"123\", \"sdfg\", \"w34tr5\"], [\"ch\", \"1.1.1.1\", \"123\", \"ghf\", \"dgjyt\"], [\"hari\", \"1.2.3.4\", \"324\", \"xcfhd\", \"serteg34g\"], [\"hari5\", \"5.5.5.5\", \"555\", \"555\", \"555\"], [\"hari4\", \"4.4.4.4\", \"444\", \"444\", \"444\"], [\"hari3\", \"3.3.3.3\", \"333\", \"sfse\", \"3rw\"], [\"hari6\", \"6.6.6.6\", \"666\", \"666\", \"666\"]]
そこに何を期待しているのか?この問題を解決する簡単な方法があれば、提案をお待ちしています。