Как я могу разобрать массив массивов JSON с Retrofit? - PullRequest
0 голосов
/ 06 июня 2018

Я звоню binance-api , и ответ такой:

[
 [
    1528265700000,
    "606.84000000",
    "609.50000000",
    "606.84000000",
    "609.50000000",
    "399.45771000",
    1528266599999,
    "242985.40248060",
    415,
    "200.23538000",
    "121838.16910200",
    "0"
 ],
 [
    1528266600000,
    "609.50000000",
    "609.58000000",
    "606.88000000",
    "608.11000000",
    "1328.29962000",
    1528267499999,
    "807439.07315600",
    709,
    "220.23076000",
    "133950.90569850",
    "0"
]

]

у него нет объекта json.Когда я использую модификацию, я получаю

JsonSyntaxException: ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY в строке 1 пути 3 столбца $ [0]

Как я могу его проанализировать?

Ответы [ 4 ]

0 голосов
/ 06 июня 2018

Вам следует проанализировать ответ API, как показано ниже:

  String result = response.body().string();
  JSONArray jsonArray = new JSONArray(result);
  for(int i=0;i<jsonArray.length();i++){
       JSONArray jsonArrayRow = jsonArray.getJSONArray(i);
       for (int j = 0; j < jsonArrayRow.length(); j++) {
                 String data=jsonArrayRow.getString(j);
         }
  }

Надеюсь, это поможет вам ... если вам нужна помощь, вы можете попросить

0 голосов
/ 06 июня 2018

Используйте это как-то так, и, пожалуйста, попробуйте создать свой дочерний массив для объекта, иначе вы не можете получить данные из дочернего массива, потому что вам нужно использовать этот 0,1,2,3 .... в качестве ключа.

 private void loadJson() {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("you api url")
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        RequestInterface request = retrofit.create(RequestInterface.class);
        Call<JSONResponse> call = request.getJSON();
        call.enqueue(new Callback<JSONResponse>() {
            @Override
            public void onResponse(Call<JSONResponse> call, Response<JSONResponse> res) {

                JSONResponse response = res.body();
                try {
                    JSONArray json = new JSONArray(""+response);
                    for (int i = 0; i < json.length(); i++) {

                        JSONArray arrayInArray = json.getJSONArray(i);

                        for (int j = 0; j < arrayInArray.length(); j++) {
                            Log.e("Here is", "" + arrayInArray.getString(j));
                        }

                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onFailure(Call<JSONResponse> call, Throwable t) {
                Log.d("Error",t.getMessage());
            }
        });
}

Дайте мне знать, если это работает для вас.

0 голосов
/ 06 июня 2018

Вам нужно разобрать вручную этот json.Пожалуйста, проверьте ниже решение: -

 JSONArray jsonArray = new JSONArray(response);
    for(int i=0;i<jsonArray.length();i++){
        String value = jsonArray.get(i);
    }
0 голосов
/ 06 июня 2018

Модернизация ожидает, что объект json начнется с { и закончится } Может быть, вы можете добавить их, если их еще нет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...