Я получаю этот безымянный массив json
[ { "symbol": "AAPL", "price": 207.1, "updated_at": "2019-04-23 16:26:09" }, { "symbol": "FB", "price": 183.12, "updated_at": "2019-04-23 16:26:09" } ]
Но мой код работает с именованным массивом, например:
{
"stocks": [
{
"symbol": "AAPL",
"price": 205.98,
"updated_at": "2019-04-23 15:18:25"
},
{
"symbol": "FB",
"price": 182.99,
"updated_at": "2019-04-23 15:18:25"
}
]
}
Я не знаю, как разобрать безымянный массив. Это работает только тогда, когда он назван, как это (я назвал акции массива данных json).
try {
JSONArray jsonArray = response.getJSONArray("stocks");
Как я могу заставить его работать с безымянным массивом?
Я хочу работать с первым закомментированным URL-адресом.
private void jsonParse() {
// String url = "https://financialmodelingprep.com/api/company/real-time-price/AAPL,FB,GOOG,RHT,NOK,INTC?datatype=json";
String url = "https://api.myjson.com/bins/134wfc";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//I call the array stocks, but it doesn't have a name from the server, so it wont show.
try {
JSONArray jsonArray = response.getJSONArray("stocks");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject stock = jsonArray.getJSONObject(i);
String symBol = stock.getString("symbol");
int value = stock.getInt("price");
mTextViewResult.append(symBol + ", " + String.valueOf(value) + " $\n" );
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mQueue.add(request);
}
}