处理多个JSON对象(Android Java)

时间:2015-10-11 23:26:37

标签: java php android json

我目前正在处理一些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之后什么也没做,我的Logs就在那里停止了。测试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");
}

我的PHP页面包括: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

1 个答案:

答案 0 :(得分:0)

问题:

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

解决方案:

您有两个不同的数组作为响应发送。然后首先将它们组合在单个数组中,然后以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); //发送回复