Это путешествие начинается с сообщения от сервера, которое становится строкой, изначально оно выглядит следующим образом:
/713.105.135.149:54969: [{"row 0":[{},{},{},{},{},{},{},{}]},{"row 1":[{},{},{},{},{},{},{},{}]},{"row 2":[{},{},{},{},{},{},{},{}]},{"row 3":[{},{},{},{},{},{},{},{}]},{"row 4":[{},{},{},{},{},{},{},{}]},{"row 5":[{"column 0":"WhitePawn"},{},{},{},{},{},{},{}]},{"row 6":[{},{},{},{},{},{},{},{}]},{"row 7":[{},{},{},{},{},{},{},{}]}]
, затем я обрезаю все, что не соответствует JSON, например message.substring(message.indexOf("["));
После этого я приведу его как JSONarray, используя этот код JSONArray jsonArray = new JSONArray(trimmed);
Впоследствии, я хочу проиндексировать его, я могу сделать что-то вроде этого jsonArray.get(4);
но это возвращает {"row 4":[{"column 0":"WhitePawn"},{},{},{},{},{},{},{}]}
, тогда как я на самом деле хочу WhitePawn
.
Проблема в том, что jsonArray.get(4)
вернул мне только JSONObject
, тогда как я думаю, что мне нужно / нужно это другоеJSONArray
, так что я могу еще раз проиндексировать его, что-то вроде JSONArray subArray = jsonArray.get(0);
, проблема в том, что это не работает.
Как я могу сделать так, чтобы результат jsonArray.get(4)
возвратил или был приведен к чему-то, что я мог бы снова проиндексировать?
Полный код выглядит следующим образом:
private void parseMessageRedrawBoard(String message) throws Exception {
Log.d("0000: ", message);
String trimmed = message.substring(message.indexOf("["));
Log.d("1111: ", trimmed);
JSONArray jsonArray = new JSONArray(trimmed);
//"column 0"
Object subArray = jsonArray.get(4);
Log.d("YES: ", subArray.toString());
}