如何从嵌套 json volley/android 中检索数据
How to retrieve data from nested json volley/android
我想从这个 JSON 中获取所有标题。我正在使用 Volley 库。
我的代码:
public void getAllName(){
String urls = "https://sheets.googleapis.com/v4/spreadsheets/1AtYF5g2_A3AiAhejVj595bDLxO1zoGq7PNGjbdV9U8Q?fields=sheets.properties.title&key=AIzaSyDLeY5OUn8KKHeBY6PSZJbBE8rIIME_9dc";
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urls,
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject feedObj = response.getJSONObject("sheets");
JSONArray entryArray = feedObj.getJSONArray("properties");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(jsonObjectRequest);
}
请告诉我如何获得所有标题...
TIA
参考:https://whosebug.com/a/49839058/13533028
根据您的 Json 回复,您的标题数据位于工作表内的属性内。
JsonObject 可以使用 getJsonObject("name of the 属性")
从 Json 检索
JSONObject jsonObject = new JSONObject(response);
JSONObject dataArray = jsonObject.getJSONArray("sheets");
JSONArray properties= dataArray.getJsonObject(YOUR_ELEMENT_NO);
现在你可以用properties.title一样的方式使用了,想怎么用就怎么用。
此外,我建议使用 Retrofit 进行网络任务,因为它使网络任务变得更加容易。
您可以执行以下操作:
JSONArray jsonArray = jsonObject.getJSONArray("sheets");
List<String> titles = IntStream.range(0,jsonArray.length())
.mapToObj(i -> jsonArray.getJSONObject(i)
.getJSONObject("properties")
.getString("title"))
.collect(Collectors.toList());
输出:
[CSE522, EEE, BBA, MBA, SWE555, CSE625, CSE721, CSE250, CSE775, CSE499]
我想从这个 JSON 中获取所有标题。我正在使用 Volley 库。
我的代码:
public void getAllName(){
String urls = "https://sheets.googleapis.com/v4/spreadsheets/1AtYF5g2_A3AiAhejVj595bDLxO1zoGq7PNGjbdV9U8Q?fields=sheets.properties.title&key=AIzaSyDLeY5OUn8KKHeBY6PSZJbBE8rIIME_9dc";
RequestQueue queue = Volley.newRequestQueue(MainActivity.this);
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, urls,
null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONObject feedObj = response.getJSONObject("sheets");
JSONArray entryArray = feedObj.getJSONArray("properties");
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
queue.add(jsonObjectRequest);
}
请告诉我如何获得所有标题... TIA
参考:https://whosebug.com/a/49839058/13533028
根据您的 Json 回复,您的标题数据位于工作表内的属性内。 JsonObject 可以使用 getJsonObject("name of the 属性")
从 Json 检索 JSONObject jsonObject = new JSONObject(response);
JSONObject dataArray = jsonObject.getJSONArray("sheets");
JSONArray properties= dataArray.getJsonObject(YOUR_ELEMENT_NO);
现在你可以用properties.title一样的方式使用了,想怎么用就怎么用。
此外,我建议使用 Retrofit 进行网络任务,因为它使网络任务变得更加容易。
您可以执行以下操作:
JSONArray jsonArray = jsonObject.getJSONArray("sheets");
List<String> titles = IntStream.range(0,jsonArray.length())
.mapToObj(i -> jsonArray.getJSONObject(i)
.getJSONObject("properties")
.getString("title"))
.collect(Collectors.toList());
输出:
[CSE522, EEE, BBA, MBA, SWE555, CSE625, CSE721, CSE250, CSE775, CSE499]