Android 获取后台错误和can';我好像没法修好

Android 获取后台错误和can';我好像没法修好,android,android-intent,background,Android,Android Intent,Background,我试图通过Json('naam')获取一个字符串,并将其显示在文本视图中。当我打算进行该活动时,它会崩溃(有时在一秒钟后)。我不知道我做错了什么,我也看了这里的其他问题,但解决方案不起作用(但很可能是我…)。提前谢谢 公共类Recept扩展活动{ } 错误: 您的JSON对象上出现空指针异常,这意味着您的任务可能很好,但JSON对象创建中存在问题您的JSON对象上出现空指针异常,这意味着您的任务可能很好,但JSON对象创建中存在问题 原因:java.lang.NullPointerExcepti

我试图通过Json('naam')获取一个字符串,并将其显示在文本视图中。当我打算进行该活动时,它会崩溃(有时在一秒钟后)。我不知道我做错了什么,我也看了这里的其他问题,但解决方案不起作用(但很可能是我…)。提前谢谢

公共类Recept扩展活动{

}

错误:


您的JSON对象上出现空指针异常,这意味着您的任务可能很好,但JSON对象创建中存在问题

您的JSON对象上出现空指针异常,这意味着您的任务可能很好,但JSON对象创建中存在问题

原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String org.json.JSONObject.toString()”me.janvandijk.receptenapp.Recept$retrievedata.doInBackground(Recept.java:62

如果
doInBackground
函数中的
ab
值为
null
,则返回该值。但是您希望返回一个
字符串
(查看返回值)

尝试在上面的catch子句中返回一个空字符串

try 
{
    ab = jobj.getString("naam");
} 
catch (JSONException e) 
{
    e.printStackTrace();
    return "";
}
return ab;
因此,您不会返回一个
null
,该字符串将被视为字符串

原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“java.lang.String org.json.JSONObject.toString()”me.janvandijk.receptenapp.Recept$retrievedata.doInBackground(Recept.java:62

如果
doInBackground
函数中的
ab
值为
null
,则返回该值。但是您希望返回一个
字符串
(查看返回值)

尝试在上面的catch子句中返回一个空字符串

try 
{
    ab = jobj.getString("naam");
} 
catch (JSONException e) 
{
    e.printStackTrace();
    return "";
}
return ab;
因此,您不会返回一个
null
,它将被视为字符串。

试试看

protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            JSONArray ja = jsonparser.makeHttpRequest("http://janvandijk.me/zooi/receptenapp/getrecipes.php?type=request&datatype=recept&id=1" /*+ receptid*/);

            // check your log for json response
            //Log.d("Shit terug: ", jobj.toString());

            try {
                ab = ja[0].getString("naam");
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return ab;
        }
我想是jsonArray

您应该使用截取来解析json。它非常简单快速

试试看

protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            JSONArray ja = jsonparser.makeHttpRequest("http://janvandijk.me/zooi/receptenapp/getrecipes.php?type=request&datatype=recept&id=1" /*+ receptid*/);

            // check your log for json response
            //Log.d("Shit terug: ", jobj.toString());

            try {
                ab = ja[0].getString("naam");
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return ab;
        }
我想是jsonArray

您应该使用截取来解析json。它非常简单和快速

您应该使用

JSONArray jsonArray = jsonObjlist.getJSONArray("#name of your array");
但在此之前,您应该命名数组,如果没有它,您将无法获取适当的数据

将您的回答更改为:

{"#name of your array":[{"id":"2","naam":"Bastogneparfait a la Kim","beschrijving":"Gemaakt van Bastogne, het lekkerste gerecht ooit!","ingredienten":"Bastogne parfait ingredi\u00ebnten\r\n40 gram eierdooiers (gepasteuriseerd)\r\n45 gram hele eieren (gepasteuriseerd)\r\n100 gram suiker \r\n2,5 dl slagroom ongezoet\r\n4  bastognekoeken \r\nKaralmelsaus ingredi\u00ebnten\r\n100 gram suiker \r\n2 dl koksroom ","bereiding":"Slagroom opkloppen tot yoghurt dikte. De eidooiers, hele eieren en suiker in een bekken doen en au bain-marie verwarmen tot 37 graden Celsius. Koud kloppen in de keukenmachine tot een luchtige massa. Spatel de massa door de slagroom. Kruimel de bastognekoeken en spatel ze voorzichtig door de massa. Vul de vormpjes en zet in diepvries.\nBereidingswijze karamelsaus\nDoe de suiker in een pan en verwarm de suiker tot deze is gekaramelliseerd. Haal de pan van het vuur en voeg de koksroom toe. Laat de karamel goed oplossen in de koksroom regelmatig roeren. Als de massa glad is af laten koelen.\nOpdienen\nHaal de parfait uit de vorm en leg in een tapasschaaltje. Doe er karamelsaus bij en een toefje slagroom op de parfait. Eventueel af garneren met een takje mint.","auteur":"2","imgurl":"https:\/\/s-media-cache-ak0.pinimg.com\/236x\/ea\/ea\/02\/eaea02155df75a711045371a3c1d169e.jpg","timestamp":"2015-10-22 14:42:14","unaam":"Arjen van Gaal","email":"arjenvangaal@gmail.com","wachtwoord":"arjen","iban":"NL93 ABNA 0000 1234 56","telefoonnummer":"629466064","x":"0"}]}
你应该使用

JSONArray jsonArray = jsonObjlist.getJSONArray("#name of your array");
但在此之前,您应该命名数组,如果没有它,您将无法获取适当的数据

将您的回答更改为:

{"#name of your array":[{"id":"2","naam":"Bastogneparfait a la Kim","beschrijving":"Gemaakt van Bastogne, het lekkerste gerecht ooit!","ingredienten":"Bastogne parfait ingredi\u00ebnten\r\n40 gram eierdooiers (gepasteuriseerd)\r\n45 gram hele eieren (gepasteuriseerd)\r\n100 gram suiker \r\n2,5 dl slagroom ongezoet\r\n4  bastognekoeken \r\nKaralmelsaus ingredi\u00ebnten\r\n100 gram suiker \r\n2 dl koksroom ","bereiding":"Slagroom opkloppen tot yoghurt dikte. De eidooiers, hele eieren en suiker in een bekken doen en au bain-marie verwarmen tot 37 graden Celsius. Koud kloppen in de keukenmachine tot een luchtige massa. Spatel de massa door de slagroom. Kruimel de bastognekoeken en spatel ze voorzichtig door de massa. Vul de vormpjes en zet in diepvries.\nBereidingswijze karamelsaus\nDoe de suiker in een pan en verwarm de suiker tot deze is gekaramelliseerd. Haal de pan van het vuur en voeg de koksroom toe. Laat de karamel goed oplossen in de koksroom regelmatig roeren. Als de massa glad is af laten koelen.\nOpdienen\nHaal de parfait uit de vorm en leg in een tapasschaaltje. Doe er karamelsaus bij en een toefje slagroom op de parfait. Eventueel af garneren met een takje mint.","auteur":"2","imgurl":"https:\/\/s-media-cache-ak0.pinimg.com\/236x\/ea\/ea\/02\/eaea02155df75a711045371a3c1d169e.jpg","timestamp":"2015-10-22 14:42:14","unaam":"Arjen van Gaal","email":"arjenvangaal@gmail.com","wachtwoord":"arjen","iban":"NL93 ABNA 0000 1234 56","telefoonnummer":"629466064","x":"0"}]}