从JSONArray检索数组并将数组设置为类变量

时间:2012-02-10 07:30:09

标签: java android arrays

放弃gson之后,我遇到了一个看似非常小的问题,但我似乎无法确定问题所在。我只是想从JSONArray中获取一个整数数组,并将整数数组保存到类变量中。

int length = myArray.length();
if(length>0){
    for(int j=0; j<length; j++){
    JSONArray test = myArray.getJSONArray(j);
    myArray = new int[test.length()];
    for(int k=0; k<test.length(); k++) {
        myArray[k] = test.getInt(k);
    }
} 



  // However, when I add myArray to the User constructor, the values don't "stick"
    // ie, 
    User user = new User(x, y, z, myArray);

    // At this point, myArray doesn't contain its values after I try to access them fromthe    
    // User class

这是User类:

public User(String x, String y, int z, int[] myArray){
    this.x = x;
    this.y = y;
    this.z = z;
    for(int i=0; i<myArray.length; i++){
        Log.v(LOG_TAG, "User: myArray [" + i + "] = " + myArray[i]);
        this.myArray[i] = myArray[i];
     }
}

当我尝试打印User的内容时,除阵列本身外,所有预期值都在那里。感谢。

1 个答案:

答案 0 :(得分:0)

我没有看到您的代码中存在任何重大缺陷,因此我将提供一些一般性建议......

在代码中设置一些断点并进入调试模式,以便确定问题的范围。 myArray是否在将其传递给用户类之前设置了所有元素?如果没有,那么请退后一步,确保正在解析您的JSON数组并正确地传递值。

我要改变的另一件事是User构造函数的参数与内部字段的名称相同。您使用了'this'变量这是好的,但您仍然希望更改该参数名称以避免任何可能的混淆,您可能会将变量分配给自身。

设置断点并逐步执行程序,您应该能够确切地确定问题首先发生的位置,然后解决起来会更容易。

祝你好运!