找不到JSON对象

时间:2019-02-25 09:26:10

标签: java json

我有一个JSON ArrayList[222, 222, 333, 444, 555, 666, 777]

我只需要将值[333,444,555,666,777]存储在我的JSON ArrayList中。

我已经尝试过下面的代码,但是我无法获取值444的JSON对象。 遇到的错误是:Exception: org.json.JSONException: JSONObject["4"] not found.

//list to delete data
 int lengthJSONMerged = JSONmergedJSONDataLog.length();
int count= lengthJSONMerged - 5; //5 is the max number should be in the array

for(int u= count+1; u < lengthJSONMerged+1;u++) { 
            String str = Integer.toString(u);
            JSONArray arrSessionDouble=(JSONArray)JSONmergedJSONDataLog.get(str); 
}

原始数据如下。我需要保留最新的5条记录。

 {"1":[{"sessionID":"222","loginTime":"2019-02-25 15:10:03"}],
 "2":[{"sessionID":"222","loginTime":"2019-02-25 15:10:05"}],
"3":[{"sessionID":"333","loginTime":"2019-02-25 15:10:11"}],
 "4":[{"sessionID":"444","loginTime":"2019-02-25 15:10:17"}],
 "5":[{"sessionID":"555","loginTime":"2019-02-25 15:10:26"}],
 "6":[{"sessionID":"666","loginTime":"2019-02-25 15:10:35"}],
 "7":[{"sessionID":"777","loginTime":"2019-02-25 17:09:30"}]}

您是否知道为什么我会收到该错误。 当我尝试硬编码并运行Java程序时,我设法获得了属性“ 4”的值。

我用来硬编码并获取属性4的vakue的代码。

JSONArray arrSessionDouble=(JSONArray)JSONmergedJSONDataLog.get("4");

2 个答案:

答案 0 :(得分:2)

ArrayList[222, 222, 333, 444, 555, 666, 777]

所以您要存储最后5个值,所以我假设您将count变量作为u变量的开始。

int lengthJSONMerged = JSONmergedJSONDataLog.length();
int count= lengthJSONMerged - 5   // to get start of u

for(u=count;u<lengthJSONMerged;u++)    //lengthJSONMerged to loop upto 7 as arrayindex would be 6
{
  String str = Integer.toString(u);
  JSONArray arrSessionDouble=(JSONArray)JSONmergedJSONDataLog.get(str); //Here loop will run for u=2,3,4,5,6
}

因此,使用上述代码,将存储数组的最后5个元素。 您可能会迷惑使用数组索引。 不要忘记数组从索引0开始。 并且您的jason的编号从1开始。

代码出错的地方

for(u=count+1;u<lengthJSONMerged+1;u++)  

因此,这里是从3(count + 1)开始循环,以8(length即7 + 1)结束 我们的数组元素是

ArrayList[0]:- 222
ArrayList[1]:- 222
ArrayList[2]:- 333
ArrayList[3]:- 444 //your loops starts here
ArrayList[4]:- 555
ArrayList[5]:- 666
ArrayList[6]:- 777
ArrayList[7]:- null //here you are getting exception as you are pointing to node
ArrayList[8]:- null //Ends here

答案 1 :(得分:0)

第一次迭代时,lengthJSONMerged的值为2:

int lengthJSONMerged = JSONmergedJSONDataLog.length(); // length of array is 7
int count= lengthJSONMerged - 5; // 7 - 5 = 2

这里uT到底是什么?

for(int u= uT; u < lengthJSONMerged+1;u++)

如果这只是一个初始化并且uT变量设置为1(数组中第一个JSON对象的值),那么您的for循环将如下所示:

for(int u = 1; u < 3; u++)
{ ... }

那么很清楚为什么你没有得到第四项。