1

在 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();   
4

2 回答 2

1

如果 Json 字符串中不存在键名,您还需要将 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... 
于 2013-01-24T08:05:43.753 回答
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);**
                    }
于 2013-01-24T08:00:36.063 回答