Детальное индексирование в подмассив json в Java с последующим преобразованием из строки - PullRequest
0 голосов
/ 14 октября 2018

Это путешествие начинается с сообщения от сервера, которое становится строкой, изначально оно выглядит следующим образом:

/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());
    }

1 Ответ

0 голосов
/ 14 октября 2018

предупреждение о спойлере, JSONArray subArray = jsonArray.getJSONArray(4); не сработало, так много для RTFM!

, но это работает ...

    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"

        JSONObject subObject = jsonArray.getJSONObject(4);

        JSONArray result = subObject.getJSONArray("row 4");

        Log.d("YES: ", result.get(0).toString());
    }

спасибо @Andreas за советы!

...