我有一个jsonArray响应。我需要阅读包含3个jsonArrays的响应。
这是json响应。这是一个GET请求,并通过Volley请求发送。
[
"0x9000",
[
[
"D3521",
"abc"
],
[
"D4212",
"def"
],
[
"D2715",
"hij ."
],
[
"D2366",
"klm"
],
[
"D3660",
"nopq"
]
]
]
这是我尝试发送字符串请求的代码。
try{
RequestQueue MyRequestQueue = Volley.newRequestQueue(this);
final String endpoint = "getdoctors";
final String url = SettingsConfig.IP + endpoint;
StringRequest MyStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
android.util.Log.d("print response",response);
try {
JSONArray jsonArray = new JSONArray(response);
for (int i=0; i<jsonArray.length(); i++){
JSONArray dataArray = (JSONArray) jsonArray;
String code = dataArray.getString(i);
}
} catch (JSONException e) {
e.printStackTrace();
Log.e("Provider Inquiry","JSON error:" + e.getMessage());
Intent intent = new Intent(EChannellingInfoActivity.this,MainMenuActivity.class);
startActivity(intent);
finish();
}
}
}, new Response.ErrorListener() { //Create an error listener to handle errors appropriately.
@Override
public void onErrorResponse(VolleyError error) {
android.util.Log.d("print error", error.toString());
//This code is executed if there is an error.
}
});
MyStringRequest.setRetryPolicy(new DefaultRetryPolicy(0, 0, DefaultRetryPolicy.DEFAULT_TIMEOUT_MS));
MyRequestQueue.add(MyStringRequest);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
此响应中有3个jsonArrays。我该如何对它们进行分类/阅读。
答案 0 :(得分:1)
首先创建一个包含内部实例的类
public class InnerObj
{
String id;
String name;
}
然后使用内部对象创建外部对象的类
public class OuterObj
{
String size;
InnerObj values[];
}
现在,您可以使用OuterObj类作为responseType,将其映射到凌空的响应
答案 1 :(得分:1)
我想解析以下JSON文件,但以[开头是指向我的数组。
当以[
开头的JSON字符串表示该字符串为JSONArray
如何修改解析器以解析此文件?
1。。将JSON字符串转换为JSONArray而不是JSONObject:
JSONArray jsonArray = new JSONArray(json);
2。。将getJSONFromUrl
方法的返回类型从JSONArray
更改为JSONObject
3。。在doInBackground
中,从JSONArray中的getJSONFromUrl
方法获得响应:
JSONArray jsonArray = jParser.getJSONFromUrl(URL);
这里是进一步的答案LINK
这是您可以解析JSON数组
JSONArray jsonArray = new JSONArray(response);
String str = (String) jsonArray.get(0);
JSONArray arrayTwo = jsonArray.getJSONArray(1);
for (int i=0; i<arrayTwo.length(); i++){
JSONArray dataArray = arrayTwo.getJSONArray(i);
String code = dataArray.getString(i);
}