Java Android:JSONParser返回NullPointerException
我从收到相同例外的人那里读过许多关于SO的其他话题,但所提出的解决方案都不起作用。所以我的问题是: 我正试图通过我的应用程序中的一个函数从我的数据库下载一个用户列表。JSONParser不断从数据库中返回此特定表上的NullPointException。我已经在其他查询中成功地使用了JSONParser类,但在这个查询中它不起作用。我已经测试了处理查询的PHP文件,它返回了我想要的JSON对象的确切值。如果表为空,则返回:Java Android:JSONParser返回NullPointerException,java,android,nullpointerexception,Java,Android,Nullpointerexception,我从收到相同例外的人那里读过许多关于SO的其他话题,但所提出的解决方案都不起作用。所以我的问题是: 我正试图通过我的应用程序中的一个函数从我的数据库下载一个用户列表。JSONParser不断从数据库中返回此特定表上的NullPointException。我已经在其他查询中成功地使用了JSONParser类,但在这个查询中它不起作用。我已经测试了处理查询的PHP文件,它返回了我想要的JSON对象的确切值。如果表为空,则返回: { "success":0, "message":"No
{
"success":0,
"message":"No users found"
}
{
"success":1,
"users":[
{
"ID":someID1,
"NAME":someName1
"PHONE":somePhoneNumber1
},
{
"ID":someID2,
"NAME":someName2
"PHONE":somePhoneNumber2
}]
}
如果该表包含用户信息,则返回:
{
"success":0,
"message":"No users found"
}
{
"success":1,
"users":[
{
"ID":someID1,
"NAME":someName1
"PHONE":somePhoneNumber1
},
{
"ID":someID2,
"NAME":someName2
"PHONE":somePhoneNumber2
}]
}
我打电话开始请求
以某种方式。这是我的LoadAllUsers类:
公共类LoadAllUsers扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=新建进度对话框(allUsers.this);
pDialog.setMessage(“Laden van alle gebruikers…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
@凌驾
受保护的布尔doInBackground(Void…args){
updateJSONData();
返回null;
}
@凌驾
受保护的void onPostExecute(布尔结果){
super.onPostExecute(结果);
pDialog.disclose();
updateList();
}
}
我在updateJSONdata()方法的第一行收到一个NullPointerException,它是:
如果你能帮我解决这个问题,我将不胜感激 那么,
jParser
在updateJSONdata()
中为空
确保检查它是否为!=在使用它之前为空
如果不应该为null,则修复代码
您的错误只是一个NullPointerException
您可以使用'has'关键字检查json键的可用性,然后可以解析json以避免异常,否则可以通过Null Pointer异常进行跟踪
public void updateJSONData() {
JSONObject json = jParser.getJSONFromUrl(my_url);
try {
int success = json.getInt("success");
boolean isAvail=json.has("users");
if (success == 1) {
if(isAvail)
JSONArray users = json.getJSONArray("users");
for (int i = 0; i<users.length(); i++) {
}
}
}
catch(Exception e){
}
}
public void updateJSONData(){
JSONObject json=jParser.getJSONFromUrl(我的url);
试一试{
int success=json.getInt(“success”);
布尔值isAvail=json.has(“用户”);
如果(成功==1){
如果(isAvail)
JSONArray users=json.getJSONArray(“用户”);
对于(int i=0;i1.jParser为空,因此使用
// make sure my_url has json string in it
// read json first and use in place of my_url
JSONObject jsonObjTokener = (JSONObject) new JSONTokener(my_url).nextValue();
// get success
String isSuccess = jsonObjTokener.getString("success");
// get users
JSONObject mUser = jsonObjTokener.getJSONObject("users");
在那条线上
2.您在上一次考试中犯了拼写错误
String name = c.getString("NAAM");
正确的
String name = c.getString("NAME");
哪一行是center\u tile.java:376
?这是我的updateJSONdata()方法的第一行:JSONObject json=jParser.getJSONFromUrl(我的url)
那么jParser
是空的。是的,但问题是我不明白为什么。我的php脚本返回一个正确的json编码对象。您没有发布关于jParser
是什么或它是如何创建的代码……可能使用JSONObject json=new JSONParser().getJSONFromUrl(我的url)
?确实完成了任务。感谢您的帮助!仍然会生成NullPointerException
,因为jParser
是null
。
String name = c.getString("NAME");