处理多个JSON对象(Android Java)


Dealing with multiple JSON objects (Android Java)

我目前正在处理一些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_update,但是在我要求找到player_list之后,什么也不做,我的日志就停在那里了。Test 00和Test 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_encode($array1);echo",";json_encode($array2);但是逗号是没有用的。也许如果我的JSON是有效的,那么它会更好地工作。

Logcat:

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

问题:

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

解决方案:

您有两个不同的数组作为响应发送。然后将它们合并成一个数组,然后以json格式进行编码。

示例:(在你的php文件中)

$ data_to_send =数组();
$ data_to_send [' player_update '] = $ player_update;//一个数组的播放器更新
$ data_to_send [' player_list '] = $ player_list;//player_list

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