我致电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]
我该如何解析它?
答案 0 :(得分:1)
使用类似这样的东西,请尝试创建你的子数组,否则你很困惑从子数组中获取数据,因为你需要使用这个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());
}
});
}
让我知道它是否适合你。
答案 1 :(得分:1)
你需要手动解析这个json。请检查以下解决方案: -
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
String value = jsonArray.get(i);
}
答案 2 :(得分:1)
您应该解析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);
}
}
希望这有助于你...如果你需要任何帮助,你可以问
答案 3 :(得分:0)
Retrofit期望json对象以{
开头,以}
结尾
也许你可以添加它们,如果它们还没有?