在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();
答案 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);**
}