我当前正在编写RESTFUL Web服务程序。
我希望接收一个或两个输入的输入(取决于我的returnValue
结果)。
我很难将值分配给2维数组。
我已经尝试了上面遇到的上述代码:java.lang.NullPointerException
关于如何将MethodName
和MethodStatus
分配到二维数组的任何想法?
MethodSet
的预期输出应为([1][1]),([2][1])
。
每次显示新的二维数组时,应调用AdaptiveAuthService.adaptiveAuth
。
WebService输入:
{"methodSet": [{"num":1,"methodName": 1, "methodStatus": "1"},
{"num":2,"methodName": 2, "methodStatus": "1"}]}
AdaptiveRESTFUL:
@POST
@Path("/post")
@Consumes(MediaType.TEXT_PLAIN)
@Produces(MediaType.APPLICATION_JSON)
public int adaptiveAuth(String objDataLog) throws SQLException{
JSONObject obj = new JSONObject(objDataLog);
JSONArray arr=(JSONArray)obj.get("methodSet");
//to get how many method been send to TE
if (arr != null) {
JSONObject objMethod;
String Num;
for (Object o : arr) {
objMethod = (JSONObject) o;
Num = String.valueOf(objMethod.get("num"));
resultNum = Integer.parseInt(Num);
logWriter("resultNum: "+resultNum);
}
}
//declaration of 2 dimension array
MethodClass[][] methodSet = new MethodClass[resultNum][resultNum];
//to get value for MethodName, MethodStatus
if (arr != null) {
JSONObject objMethod1;
String MethodName, MethodStatus;
for (Object o1 : arr) {
objMethod1 = (JSONObject) o1;
MethodName = String.valueOf(objMethod1.get("methodName"));
MethodStatus = String.valueOf(objMethod1.get("methodStatus"));
int resultMethodName = Integer.parseInt(MethodName);
int resultMethodStatus = Integer.parseInt(MethodStatus);
logWriter("MethodName: "+resultMethodName);
logWriter("MethodStatus: "+resultMethodStatus);
for (int i = 1; i < methodSet.length; i++){
for (int j = 1; j < methodSet[i].length; j++) {
methodSet[i][j] = new MethodClass();
methodSet[i][j].setmethodName(resultMethodName);
methodSet[i][j].setmethodStatus(resultMethodStatus);
}
//calling function to do calculation
returnValue = AdaptiveAuthService.adaptiveAuth(methodSet);//returning null pointer exception
}
}
}
AdaptiveAuthService代码:
public static int adaptiveAuth(MethodClass[][] methodSet)throws SQLException {
int aAC = methodSet[0].length;
int authMethod = methodSet[0][aAC - 1].getmethodName(); //returning nullpointer exception
如果您有解决问题的想法或方法,请提出建议并告诉我。
答案 0 :(得分:1)
根据您的代码
for (int i = 1; i < methodSet.length; i++){
for (int j = 1; j < methodSet[i].length; j++) {
methodSet[i][j] = new MethodClass();
您从1初始化i
和j
,这意味着methodSet[0]
将不会初始化(null
),然后尝试从{{ 1}}的值,那么您将获得NullPointerException