Java 在json对象上的循环中出错

Java 在json对象上的循环中出错,java,php,android,json,Java,Php,Android,Json,在我的android项目中,我有一个活动,希望使用PHP脚本从数据库中获取数据。我在这一行中管理脚本的结果: String result = EntityUtils.toString(entity); 我创建了jsonObject: JSONObject jsonObject = new JSONObject(result); 我打印这行并得到:{“id”:“1”}{“id”:“2”}{“id”:“3”} 但当我这么做的时候: int i; for(i=0;i<array.length

在我的android项目中,我有一个活动,希望使用PHP脚本从数据库中获取数据。我在这一行中管理脚本的结果:

String result = EntityUtils.toString(entity);
我创建了jsonObject:

JSONObject jsonObject = new JSONObject(result);
我打印这行并得到:{“id”:“1”}{“id”:“2”}{“id”:“3”}

但当我这么做的时候:

int i;
for(i=0;i<array.length;i++)
{
    array[i] = "ID : "+jsonObject.getString("id");
}
改为:

int i;
for(i=0;i<array.length;i++)
{
    jsonObject=array[i];
    String s = "ID : "+jsonObject.getString("id");
}
inti;
对于(i=0;i
对于单个JSON对象没有有效代码-请参见此处:

我只能猜测您试图实现什么,但我猜您的意图是拥有一个包含3个对象的JSON数组,每个对象都有一个“id”值。这种结构的JSON代码应该如下所示:

[{"id":"1"},{"id":"2"},{"id":"3"}]
如果可以使用“EntityUtils.toString(entity)”返回上述JSON代码,那么以下循环也应该可以工作:

JSONArray ja = new JSONArray(result);
for (int i = 0; i < ja.length(); i++) {
    JSONObject jsonObject = ja.getJSONObject(i);
    System.out.println("ID : "+jsonObject.getString("id"));
}
其中,结果是由以下内容组成的字符串:

{"id":"1"}{"id":"2"}{"id":"3"}

然后,JSONObject很可能在第一个右括号之后停止解析JSON代码,而不引发解析异常。因此,它实际上只解析第一个JSON对象,因此您会得到“id:1”三次。我个人认为这个行为是一个bug,所以考虑报告它。

循环中没有错误。你的实现是错误的JSONORL如何从结果字符串?jSnObjsJSOnObjult=新JSONObjor(结果)创建的?;如何打印json并获取该行?并覆盖s的每个循环?不只是在s中获取值的想法。在我编写jsonObject=array[i]时,按您想要的方式使用它;我有一个错误:“无法从字符串转换为jsonObject”发布您的完整代码。从结果初始化数组的位置?数组不是json对象。.它是一个普通的字符串Arrai尝试过,但我收到了以下错误:“值{“id”:“1”}类型org.json.JSONObject无法转换为JSONArray”好的,我的错误-我编辑了我的答案,因此应该会更有帮助。
JSONArray ja = new JSONArray(result);
for (int i = 0; i < ja.length(); i++) {
    JSONObject jsonObject = ja.getJSONObject(i);
    System.out.println("ID : "+jsonObject.getString("id"));
}
 new JSONObject(result); 
{"id":"1"}{"id":"2"}{"id":"3"}