英文:
How to fetch Json data from array of arrays in android
问题
例如,我有一个JSON格式的数组数组:
[
[17,"Tracker-9210671","+918010804433",true,84,"869867039210671"],
[18,"Gtrack_Ciaz","+918010804433",true,85,"869867039215308"],
[20,"Gtrack_Zeep_Trunk","+918010804433",true,86,"869867039210333"],
[19,"Gtrack_Zeep_Dashboard","+918010804433",true,87,"869867039209095"]
]
我想在我的Android应用程序中获取这个JSON数据,应该如何做呢?我无法获取这个JsonArray,有人可以告诉我应该使用什么样的代码。
我已经做了以下操作(使用Volley库):
public class MainActivity extends AppCompatActivity {
private TextView mTextViewResult;
private RequestQueue mQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult = findViewById(R.id.text_view_result);
Button buttonParse = findViewById(R.id.button_parse);
mQueue = Volley.newRequestQueue(this);
buttonParse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jsonParse();
}
});
}
private void jsonParse() {
String url = "url";
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) { // 请求成功时调用。
try {
for (int i = 0; i < response.length(); i++) {
JSONArray jsonArray = response.getJSONArray(i);
for (int j = 0; j < jsonArray.length(); j++) {
JSONArray value = jsonArray.getJSONArray(j);
int DB_ID = value.getInt(0);
String Devie_Name = value.getString(1);
String Mobile_Number = value.getString(2);
Boolean Status = value.getBoolean(3);
int Stock_Id = value.getInt(4);
String Device_Id = value.getString(5);
mTextViewResult.append(String.valueOf(DB_ID) + " , " + Devie_Name + " , " + Mobile_Number + " , " + String.valueOf(Status) + " , " + String.valueOf(Stock_Id) + " , " + Device_Id + "\n\n");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) { // 请求不成功时调用。
error.printStackTrace();
}
});
mQueue.add(request);
}
}
我收到的错误消息:
org.json.JSONException: Value 17 at 0 of type java.lang.Integer cannot be converted to JSONArray.
英文:
For Example i have the array of arrays of JSON format:
[
[17,"Tracker-9210671","+918010804433",true,84,"869867039210671"],
[18,"Gtrack_Ciaz","+918010804433",true,85,"869867039215308"],
[20,"Gtrack_Zeep_Trunk","+918010804433",true,86,"869867039210333"],
[19,"Gtrack_Zeep_Dashboard","+918010804433",true,87,"869867039209095"]
]
And i want to fetch this Json data in my android , How to get this.I am not able to Fetch this JsonArray Can anyone tell what should be the code for this.
What i have done is(Using volley):
'''
public class MainActivity extends AppCompatActivity {
private TextView mTextViewResult;
private RequestQueue mQueue;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextViewResult = findViewById(R.id.text_view_result);
Button buttonParse = findViewById(R.id.button_parse);
mQueue = Volley.newRequestQueue(this);
buttonParse.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
jsonParse();
}
});
}
private void jsonParse() {
String url = "url";
JsonArrayRequest request = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener < JSONArray > () {
@Override
public void onResponse(JSONArray response) { // Called when request successfull.
try {
for (int i = 0; i < response.length(); i++) {
JSONArray jsonArray = response.getJSONArray(i);
for (int j = 0; j < jsonArray.length(); j++) {
JSONArray value = jsonArray.getJSONArray(j);
int DB_ID = value.getInt(0);
String Devie_Name = value.getString(1);
String Mobile_Number = value.getString(2);
Boolean Status = value.getBoolean(3);
int Stock_Id = value.getInt(4);
String Device_Id = value.getString(5);
mTextViewResult.append(String.valueOf(DB_ID) + " , " + Devie_Name + " , " + Mobile_Number + " , " + String.valueOf(Status) + " , " + String.valueOf(Stock_Id) + " , " + Device_Id + "\n\n");
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) { // called when request not success.
error.printStackTrace();
}
});
mQueue.add(request);
}
}
'''
Error i got:
org.json.JSONException: Value 17 at 0 of type java.lang.Integer cannot be
converted to JSONArray.
答案1
得分: 0
只需将以下内容添加到您的Android Manifest
文件中。因为从Android 9操作系统开始,我们需要添加此属性android:usesCleartextTraffic="true"
。
因为从Android 9(API级别28)
开始,默认情况下禁用了明文支持。
<application
android:usesCleartextTraffic="true">
英文:
Just add this to your Android Manifest
file. Because from Android 9 OS we need to have add this property android:usesCleartextTraffic="true"
.
Because Starting with Android 9 (API level 28)
, cleartext support is disabled by default.
<application
android:usesCleartextTraffic="true">
专注分享java语言的经验与见解,让所有开发者获益!
评论