当我尝试从我的API抓取帖子并尝试插入发布我的SQLite数据库时,我在此行pdao.majPost(c);
上遇到了java.lang.NullPointerException。
我的JSON解析器类:
private PostsDAO pdao;
public void data() {
AsyncHttpClient client = new AsyncHttpClient();
client.get("http://twitter.192.168.1.38.xip.io/api/v1/posts", new AsyncHttpResponseHandler() {
@Override
public void onSuccess(String response) {
JSONObject data;
JSONArray posts;
try {
data = new JSONObject(response);
// Traitement des posts
posts = data.getJSONArray("posts");
for (int i = 0; i < posts.length(); i++) {
JSONObject c = posts.getJSONObject(i);
pdao.majPost(c);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
我的PostDAO文件
public void majPost(JSONObject c) throws JSONException {
ContentValues values = new ContentValues();
values.put("id_post", c.getInt("id_post"));
values.put("id_user", c.getInt("id_user"));
values.put("content", c.getString("content"));
values.put("photo", c.getString("photo"));
values.put("masked", c.getInt("masked"));
values.put("deleted", c.getInt("deleted"));
values.put("created_at", c.getString("created_at"));
values.put("updated_at", c.getString("updated_at"));
db.insert("posts", null, values);
}
答案 0 :(得分:1)
试试这个......
PostsDAO pdao = new PostsDAO();
答案 1 :(得分:1)
你忘记初始化pdao,这就是为什么它发射空指针,初始化它:
PostsDAO pdao = new PostsDAO();
答案 2 :(得分:1)
尝试这个
private PostsDAO pdao = new PostsDAO();
答案 3 :(得分:1)
使用以下
PostsDAO pdao = new PostsDAO();
因为你从未初始化pdao
PostsDAO pdao=null;
而不是初始化
pdao = new PostsDAO();
答案 4 :(得分:0)
为了安全使用JSON,请使用:
jsonObject.optString("string_key", "fallback");
jsonObject.optInt("int_key", -1);
或只是
jsonObject.optString("string_key");
jsonObject.optInt("int_key");
并检查是否为空。
这个想法是 opt 不会抛出异常,但如果密钥不存在或出现问题,它将返回null。
答案 5 :(得分:0)
刚刚将你的方法majPost设为静态,并将其称为PostDAO.majPost();