处理多个JSON对象(Android Java)

处理多个JSON对象(Android Java),java,php,android,json,Java,Php,Android,Json,我目前正在处理一些JSON,显然遇到了一些麻烦。我有一个PHP页面,可以同时获取两个不相关的MySQL请求,并一个接一个地显示这两个请求。我有两个JSON编码。我的问题是,我无法让我的Java程序识别第二个。第一个被解析得很好 我通过一个在线验证器运行了JSON,很明显这两个不应该像现在这样。处理这两个问题的正确方法是什么 请注意,它们之间的逗号(第11行)是手动添加的,因为我认为这会有所帮助。没有 { "player_update":[ { "i

我目前正在处理一些JSON,显然遇到了一些麻烦。我有一个PHP页面,可以同时获取两个不相关的MySQL请求,并一个接一个地显示这两个请求。我有两个JSON编码。我的问题是,我无法让我的Java程序识别第二个。第一个被解析得很好

我通过一个在线验证器运行了JSON,很明显这两个不应该像现在这样。处理这两个问题的正确方法是什么

请注意,它们之间的逗号(第11行)是手动添加的,因为我认为这会有所帮助。没有

{  
   "player_update":[  
      {  
         "id":"16",
         "name":"Phil_TEST",
         "last_login":"2015-10-12 00:36:05",
         "for_update":"00:00:00",
         "newplayer":"no"
      }
   ]
},
{  
   "player_list":[  
      {  
         "id":"16",
         "name":"Phil_TEST",
         "last_login":"2015-10-12 01:00:42"
      },
      {  
         "id":"15",
         "name":"Phil8",
         "last_login":"2015-10-12 00:50:49"
      }
   ]
}
编辑:这是我正在使用的代码。我可以很好地解析player_更新,但是在我请求查找player_列表后什么也没做,我的日志就停在那里了。测试00和测试1都不显示

JSONObject obj = new JSONObject(stream);

JSONArray arr_player_update = obj.getJSONArray("player_update");
String newplayer = arr_player_update.getJSONObject(0).getString("newplayer");
Log.i("PhLog LobbyActivity", "Newplayer : "+newplayer);

Log.i("PhLog LobbyActivity", "Test 0");
JSONArray arr_player_list = obj.getJSONArray("player_list");
Log.i("PhLog LobbyActivity", "Test 00");
for (int i = 0; i < arr_player_list.length(); i++) {
    String id = arr_player_list.getJSONObject(i).getString("id");
    String name = arr_player_list.getJSONObject(i).getString("name");
    String last_login = arr_player_list.getJSONObject(i).getString("last_login");
}
问题:

您编码JSON的方式是错误的。这不是一个有效的JSON格式数据的示例。你可以检查它的有效性

解决方案:

您有两个不同的数组作为响应发送。然后,首先将它们组合在一个数组中,然后将其编码为json格式

示例:(在php文件中)

$data_to_send=array()
$data\u to\u send['player\u update']=$player\u update;//玩家更新的数组
$data\u to\u send['player\u list']=$player\u list;//玩家列表的数组


json_encode($data_to_send);//要发送响应

请在处理完第一个JSON后,将其全部刷新(第二个JSON除外)。然后再次将其通过网格发送。这可能会奏效。也许是你的缓存你用什么例程来解析JSON?最好的解决方案可能是对您的服务器进行两次调用,或者让您将其转换为有效的JSON。如果您使用的是gson,那么有一个技巧可以用来解析来自同一个流的多个json块。您可以发布您的解析代码吗?用我的json解析代码编辑。我认为问题来自要解析的JSON,但我不确定如何使其有效;回声;工作完美无瑕,我甚至不需要更改任何其他代码。谢谢所以你不能一次处理多个编码,你只需要做一个包含其他编码的代码。
10-12 09:48:00.086 1052-1052/? I/PhLog LobbyActivity: Newplayer : no
10-12 09:48:00.086 1052-1052/? I/PhLog LobbyActivity: Test 0
10-12 09:48:00.086 1052-1052/? W/System.err: org.json.JSONException: No value for player_list