Разобрать массив из строки с помощью JSON?

Я отправляю запрос GETHTTP в файл php, который возвращает массив в кодировке JSON. Возвращаемый Array представляет собой Array 2x2. Как я могу проанализировать вывод запроса HTTP и сделать 2x2 Array в Java, например. String[][] или ArrayList.

request.php:

<?php
    $return_array = [["c1_r1", "c1_r2", "c1_r3"], ["c2_r1", "c2_r2", "c2_r3"], ["c3_r1", "c3_r2", "c3_r3"]];
    echo json_encode($return_array);
?>

MainActivity.java:

package com.example.test;

import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.*;
import android.util.*;

import java.io.*;
import java.net.*;
import java.util.*;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        StrictMode.ThreadPolicy mypolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
        StrictMode.setThreadPolicy(mypolicy);

        try {
            URL url = new URL("http://192.168.1.XXX/request.php");
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
            StringBuilder sb = new StringBuilder();
            sb.append(reader.readLine());

            // HOW TO CONVERT/PARSE THE `sb` String INTO `String[][]`, JUST LIKE THE 2x2 Array STORED IN THE `request.php`

            Log.e("console", sb.toString());

            reader.close();
            con.disconnect();
        } catch (Exception e) {
            Log.e("console", "FAIL " + e);
        }
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
94
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я рекомендую вам использовать Модернизация2 для запроса вашего сервера. Это одна из наиболее часто используемых библиотек Android. Затем вы можете использовать плагин JsonSchemaToPojo для AndroidStudio, чтобы преобразовать ваш JSON в объект Java.

Ответ принят как подходящий

Вот код (протестированный), который я использовал для преобразования предоставленного вами закодированного JSON.

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;

public class MainActivity extends Activity {

    private static JSONArray itemRows = null;
    private static String input =
            "[[\"c1_r1\", \"c1_r2\", \"c1_r3\"]," +
            "[\"c2_r1\", \"c2_r2\", \"c2_r3\"]," +
            "[\"c3_r1\", \"c3_r2\", \"c3_r3\"]]";
    private static String[][] output = new String[3][3];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // build the Array[][] from the encoded JSON
        try {
            itemRows = new JSONArray(input);
            Log.v("TestJSON","items.length = " + itemRows.length());
            Log.v("TestJSON","input = " + input);
            for(int i=0; i<itemRows.length(); i++){
                JSONArray tmpR = itemRows.getJSONArray(i);
                Log.v("TestJSON","i = " + i + " value = " + tmpR.toString());
                // Loop over each row
                Log.v("TestJSON","tmpR.length = " + tmpR.length());
                for(int j=0; j<tmpR.length(); j++){
                    String tmpC = tmpR.get(j).toString();
                    output[i][j] = tmpC;
                }
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}

Другие вопросы по теме