Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 它';s在解析json时引发异常_Java_Android_Json_Android Studio - Fatal编程技术网

Java 它';s在解析json时引发异常

Java 它';s在解析json时引发异常,java,android,json,android-studio,Java,Android,Json,Android Studio,我正在使用android studio编程,希望通过以下链接解析json: 然后把细节放在我创建的一个类中,这个类命名细节并有一个列表,但它抛出了一个异常。我该怎么办? 主要活动: public class MainActivity extends ActionBarActivity { static ArrayList<Details> details= new ArrayList<>(); @Override protected void onCreate(Bund

我正在使用android studio编程,希望通过以下链接解析json: 然后把细节放在我创建的一个类中,这个类命名细节并有一个列表,但它抛出了一个异常。我该怎么办? 主要活动:

public class MainActivity extends ActionBarActivity {
 static ArrayList<Details> details= new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    new myserver2().execute((String[]) null);
    Adapter adptor=new Adapter(this,details);
    ListView l= (ListView) findViewById(R.id.listview);
    l.setAdapter(adptor);
    Log.i("**(*si","si");
}
private class myserver2 extends AsyncTask<String,String,String> {
    String s;

    @Override
    protected String doInBackground(String... params) {

        HttpClient client = new DefaultHttpClient();
        HttpGet hp = new HttpGet("http://jsonplaceholder.typicode.com/posts");
        try

        {
            HttpResponse r = client.execute(hp);
            HttpEntity ent = r.getEntity();
            String s = EntityUtils.toString(ent);
            JSONArray array = new JSONArray(s);
            JSONObject obj = new JSONObject();
            for(int i=0;i<array.length();i++){
                Details d = null;
                obj=array.getJSONObject(i);
                d.setId(Integer.parseInt(obj.getString("id")));
                d.setUserid(Integer.parseInt(obj.getString("userId")));
                d.setBody(obj.getString("body"));
                d.setTitle(obj.getString("title"));
                details.add(d);
            }

        } catch (
                IOException e
                )

        {
            e.printStackTrace();
        } catch (
                JSONException e
                )

        {
            e.printStackTrace();
        }

        return null;
    }
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}
} 和适配器:

public class Adapter extends ArrayAdapter<Details> {
Context c;
ArrayList<Details> details;
public Adapter(Context context, ArrayList<Details> objects) {
    super(context, R.layout.item, objects);
    c=context;
    details=objects;
}



@Override
public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater= (LayoutInflater) c.getSystemService(c.LAYOUT_INFLATER_SERVICE);
    View v=inflater.inflate(R.layout.item,parent,false);
    TextView body= (TextView) v.findViewById(R.id.body);
    TextView title= (TextView) v.findViewById(R.id.title);
    String body2= details.get(position).getBody();
    String title2= details.get(position).getTitle();
    body.setText(body2);
    title.setText(title2);
    return v;
}
在这两行输入:

 d.setId(Integer.parseInt(obj.getString("id")));

私有类myserver2扩展了异步任务{
您应该检查:

d.setId(Integer.parseInt(obj.getString(“id”));

  • 如果此时d为空
  • 如果obj在该时刻为空
  • 如果键“id”在对象中,并且是表示整数的字符串

如果您在调试时考虑到了所有这些,最有可能的是您可以找到错误,或者至少向我们提供更多信息。

您可以分享异常的跟踪信息吗?@AndreuRodrígueziDonaire done!仅此而已?您应该使用我在回答中提供的信息进行调试首先处理所有异常更改}catch(IOException e){e.printStackTrace();}catch(JSONException e){e.printStackTrace();}TO:catch(Exception e){}然后检查json数据是否真正输出json..执行此操作
Caused by: java.lang.NullPointerException
        at com.etsiamak.practice5.MainActivity$myserver2.doInBackground(MainActivity.java:56)
        at com.etsiamak.practice5.MainActivity$myserver2.doInBackground(MainActivity.java:37)
 d.setId(Integer.parseInt(obj.getString("id")));
 private class myserver2 extends AsyncTask<String,String,String> {