显示空指针异常的 JSON 对象



我想将数据发布到url并获取Null pointer exception 我的JSON URL包含

{
  "Details":
    [
      {
        "Status":"NO UPDATES"
      }
    ]
}

我收到错误:

String status = object.getString("Status").trim(); //error Line

完整代码:

btnPost = (Button)findViewById(R.id.btnPost);
    btnPost.setOnClickListener(this);
    btnPost.setOnClickListener(new OnClickListener()
    {
        @SuppressWarnings("null")
        @Override
        public void onClick(View arg0)
        {
            try
            {
                String postReceiverUrl = "http://";
                Log.v(TAG, "postURL: " + postReceiverUrl);
                // HttpClient
                @SuppressWarnings("resource")
                HttpClient httpClient = new DefaultHttpClient();
                // post header
                HttpPost httpPost = new HttpPost(postReceiverUrl);
                jsonobject.put("IDNo", IDNo.getText().toString());
                jsonobject.put("Position", Position.getText().toString());
                jsonobject.put("Data", Data.getText().toString());
                HttpResponse response = httpClient.execute(httpPost);
                String jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
                Log.v("jsonResult",jsonResult);
                JSONObject object = new JSONObject(jsonResult);
                String status = object.getString("Status").trim();
                Toast.makeText(getBaseContext(), "Please wait...",100).show();
                if(status.toString().equals("SUCCESS"))
                {
                    Intent i = new Intent(LoginPage.this,MainActivity.class);
                    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    startActivity(i);
                }
                if(status.toString().equals("FAILED"))
                {
                    Toast.makeText(getBaseContext(), "Wrong Credentials",100).show();
                }
                else
                {
                    Toast.makeText(getBaseContext(), "Details Inserted",100).show();
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            catch (JSONException e)
            {
                e.printStackTrace();
            } 
            catch (ClientProtocolException e)
            {
                e.printStackTrace();
            } 
            catch (IOException e) 
            {
                e.printStackTrace();
            }   

        }
    });

正确解析JSON,您会看到您的响应:-

 { "Details":[{"Status":"NO UPDATES"}]}

所以首先尝试使JSONObject的对象比JSONArray之后,请看下面的例子:-

JSONObject jsonObject = new JSONObject(jsonResult);
JSONArray detailsArray = jsonObject.getJSONArray("Details");
String status = dataArray.getJSONObject(0).getString("status");
 Toast.makeText(getBaseContext(), "Please wait...",100+status).show();

你的代码应该是这样的

 JSONObject object = new JSONObject(jsonResult);
            JSONOArray details = object.getJSONArray("Details");
           for (int i = 0; i < details.length(); i++) {
             JSONObject c = details.getJSONObject(i);
            String status = c.getString("Status");
            }
            Toast.makeText(getBaseContext(), "Please wait...",100).show();

Modift String status = object.getString("Status").trim(); to

String status = object.get("Details").getAsJsonArray()[0].getString("Status").trim();

您正在使用getString("Status")如果 JSON 中没有可用的密钥,则可能会返回null。我建议您使用optString("Status")如果键不可用,它将返回空白字符串。

JSONObject jsonObject = new JSONObject(stringJSON);
JSONArray jsonArray = jsonObject.optJSONArray("Details");
if(jsonArray != null){
   for(int i = 0; i < jsonArray.length(); i++){
     JSONObject jObject = jsonArray.optJSONObject(i);
     if(jObject != null){
       String strStatus = jObject.optString("Status");
     }
   }
}

试试这段代码

 JSONObject object = new JSONObject(jsonResult);
 JSONArray array=object.getJsonarray("Details");
 for(int i=0;i<array.length();i++)
  {
   JSONObject innerObject=array.getJsonObject(i);
   String s= innerObject.getString("Status");
  }

如果在代码中的任何时候,org.json.JSONObject json_object变得null,并且您希望避免NullPointerException(java.lang.NullPointerException),那么只需检查如下:

if(json_object == null) {
   System.out.println("json_object is found as null");
  }
  else {
       System.out.println("json_object is found as not null");
  }

最新更新