[英]Getting error while parsing the the JSON data into android
我收到這個錯誤
Error in parsing Dataorg.json.JSONException: Value ["AACHI"] at 0 of type org.json.JSONArray cannot be converted to JSONObject
Process: info.androidhive.materialdesign, PID: 18373
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
這是我試圖解析的 json 數據。`[["AACHI"],["AJAY COMPANY"],["ALL OUT"],["AMBICA"],["AMICO PRODUCTS"],["AMUL "],["ANAND BHOG 產品"],["ANNAPURNA"],["ANOOS 產品"],["ARVIND 實驗室"],["ASWINI PHARMACEUTICALS"],["ATTK 產品"],["AVA"] ,["BAJAJ 產品"],["BAMBINO"],["BANJARAS 產品"],["BHAGAYALAKSHIMI 產品"],["BRITANNIA"],["cadbury"]]
這是我解析json數據的代碼片段。
class DownloadJson extends AsyncTask {
Activity context;
ListView myListView;
private ProgressDialog dialog = new ProgressDialog(getActivity());
public DownloadJson(Activity context, ListView myListView) {
this.myListView = myListView;
this.context = context;
}
public DownloadJson() {
}
@Override
protected void onPreExecute() {
this.dialog.setMessage("Please wait");
this.dialog.show();
}
@Override
protected void onCancelled() {
super.onCancelled();
}
@Override
protected Object doInBackground(Object[] params) {
String result = null;
InputStream isr = null;
String imageId = null;
String ip = "http://ganarajsshetti.tk/mobileapp/selectjson.php/";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(ip);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
isr = httpEntity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http Connection" + e.toString());
}
// converting response to string
try {
BufferedReader br = new BufferedReader(new InputStreamReader(isr));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line + "\n");
}
isr.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error in Converting Data" + e.toString());
}
// parse JSON data
try {
JSONArray jsonArray = new JSONArray(result);
strListView = new String[jsonArray.length()];
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject json_data = jsonArray.getJSONObject(i);
strListView[i] = json_data.getString("Num_Rows");
System.out.println("--------------"+json_data.getString("Num_Rows"));
Log.e("ACK_tag", "DATA" + strListView[i]);
}
} catch (Exception e) {
Log.e("log_tag", "Error in parsing Data" + e.toString());
}
return null;
}
@Override
protected void onPostExecute(Object o) {
//objAdapter = new ArrayAdapter<String>(context,R.layout.vendorwithimage,R.id.venderdescrip,strListView);
if (dialog.isShowing()) {
dialog.dismiss();
}
callCustomAdaper(context);
}
}
@Override
public void onStop() {
super.onStop();
if (task.getStatus() == AsyncTask.Status.RUNNING)
task.cancel(true);
if (task.getStatus() == AsyncTask.Status.RUNNING)
task.cancel(true);
}
`
它的 json 數組數組。 它就像一個二維數組。
JsonArray jsonarray= new JsonArray(json);
for (int i = 0; i < jsonArray.length(); i++) {
strListView[i] = jsonarray.getJsonArray(i);
}
鏈接來源: https : //www.json.com/json-array
JSONObject json_data = jsonArray.getJSONObject(i);
這里“jsonArray”包含數組對象而不是 json 對象。 所以你必須把它改成 JsonArray
JSONArray jsonArrayElement = jsonArray.getJSONArray(0);
而且這個 json 是有效的,但不是傳統的或有用的..!!
在此處查看有關 json 的更多信息。
換行試試
JSONObject json_data = jsonArray.getJSONObject(i);
strListView[i] = json_data.getString("Num_Rows");
到
JSONArray innerJsonArray = jsonArray.getJSONArray(i);
strListView[0] = json_data.get(0);
嘗試這個。 工作正常
String json = "[[\"AACHI\"],[\"AJAY COMPANY\"],[\"ALL OUT\"],[\"AMBICA\"],[\"AMICO PRODUCTS\"],[\"AMUL\"],[\"ANAND BHOG PRODUCTS\"],[\"ANNAPURNA\"],[\"ANOOS PRODUCTS\"],[\"ARVIND LABORATORIES \"],[\"ASWINI PHARMACEUTICALS\"],[\"ATTK PRODUCTS\"],[\"AVA\"],[\"BAJAJ PRODUCTS \"],[\"BAMBINO\"],[\"BANJARAS PRODUCTS\"],[\"BHAGAYALAKSHIMI PRODUCTS\"],[\"BRITANNIA\"],[\"cadbury\"]]";
try {
JSONArray jsAr = new JSONArray(json);
String job="";
for(int i=0;i<jsAr.length();i++)
{
JSONArray js1 = jsAr.getJSONArray(i);
job += js1.getString(0);
}
Toast.makeText(this,job,Toast.LENGTH_LONG).show();
} catch (JSONException e) {
// TODO Auto-generated catch block
Toast.makeText(this,"Error",Toast.LENGTH_LONG).show();
e.printStackTrace();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.