将数据添加到ArrayList android

时间:2013-01-24 07:56:01

标签: android json

在logcat中,我获得了此代码示例的null pointer exception。我想在oneObject.has(TAG_TITLE)中添加例如Arraylist,但是当我打印currentPost.getid()时,我正在获取此nullpointer excepttion。有人可以帮帮我吗。

//从URL

获取JSON字符串
JSONArray jArray = jParser.getJSONFromUrl(url);
ArrayList<Post> PostList = new ArrayList<Post>();
Post currentPost = new Post();

// looping through All element
for(int i = 0; i < jArray.length(); i++){
    try{
        JSONObject  oneObject = jArray.getJSONObject(i);
        // Storing each json item in variable
        if(oneObject.has(TAG_ID)){
            id = oneObject.getString(TAG_ID);
            currentPost.setId(id);
        }
        else{
            id="";
        }
        if(oneObject.has(TAG_TITLE)){
            title = oneObject.getString(TAG_TITLE);
            currentPost.setTitle(title);
        }
        else{
            title ="";
        }
        if(oneObject.has(TAG_CONTENT)){
            content = oneObject.getString(TAG_CONTENT);
            currentPost.setContent(content);
        }
        else{
            content ="";
        }
        System.out.println("postlist: "+currentPost.getId());
        PostList.add(currentPost);
        currentPost = new Post();   

2 个答案:

答案 0 :(得分:1)

如果Json String中不存在键名,则还需要将currentPost对象字段值设置为默认值:

           // your code here...
            if(oneObject.has(TAG_ID)){

                id = oneObject.getString(TAG_ID);

                currentPost.setId(id);
            }
            else{

                id="DEFAULT_VALUE";
                currentPost.setId(id);  //<<<< set default value here
            }
           // your code here... 

答案 1 :(得分:0)

在您的代码中

// Storing each json item in variable

                    if(oneObject.has(TAG_ID)){

                        id = oneObject.getString(TAG_ID);

                        currentPost.setId(id);
                    }
                    else{

                        id="";
                    }

您错过了将当前oneObject.has(TAG_ID)的ID设置为false。

避免这种情况的最佳方法是,如果未设置参数,则从所有getter返回空字符串。

编辑:

添加以粗体显示的更改。

//将每个json项存储在变量

                    if(oneObject.has(TAG_ID)){

                        id = oneObject.getString(TAG_ID);

                        currentPost.setId(id);
                    }
                    else{

                        id=""; 
                        **currentPost.setId(id);**
                    }