Я вызываю 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 : Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 3 path $[0]
Как его разобрать?
Модернизация предполагает, что объект json будет начинаться с { и заканчиваться }.
Может быть, вы можете добавить их, если их еще нет?
Можете ли вы сохранить строку перед ее анализом? Если да, вы можете просто добавить туда токены. String result = "{" + response + "}"
В противном случае вы можете проверить ссылку это, у которой также есть решение
Используйте это что-то вроде этого и попробуйте создать свой дочерний массив для объекта, иначе вы запутаетесь, чтобы получить данные из дочернего массива, потому что вам нужно использовать этот 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());
}
});
}
Сообщите мне, если это сработает для вас.
конечно работает. Я хочу сделать это с помощью дооснащения и Gson.
@ H.Gheisari Я обновил свой ответ, попробуйте и дайте мне знать, работает ли
что такое JSONResponse?
Это ответ, который вы получаете в json fromet, нажав url
и после этого я преобразовал его в строку
Вам нужно вручную разобрать этот json. Пожалуйста, проверьте решение ниже: -
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
String value = jsonArray.get(i);
}
Вы должны проанализировать ответ 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);
}
}
Надеюсь, это поможет вам ... если вам нужна помощь, вы можете попросить
Почему вы не можете получить response.bod ()?
потому что при дооснащении невозможно получить ответный кузов.
Кто вам сказал, что я уже использую retrofit 2.0. Я могу получить его, почему вы не знаете, какую версию вы используете?
Вам нужно поиграть с массивами. Это абсолютно возможно, и вы можете это сделать. нужно заглянуть в stackoverflow.com/questions/8371274/…