Java 将json数组插入sqlite数据库时出现空指针异常

Java 将json数组插入sqlite数据库时出现空指针异常,java,android,json,sqlite,nullpointerexception,Java,Android,Json,Sqlite,Nullpointerexception,当我试图将json数组插入sqlite数据库时,我遇到了这个Nullpoint异常错误。 关于Elline 198 我们将从jsonarray获取值,并将其添加到内容值中。直到这一行,我将获取json响应的值,我已经在日志中打印了键和值。检查我是否得到任何空值。但这些值很好,我可以在日志中看到它们。当我的脱胶器进入下线时,我得到了错误。请帮我一次忙 12-07 11:25:34.290: E/AndroidRuntime(9177): FATAL EXCEPTION: AsyncTask

当我试图将json数组插入sqlite数据库时,我遇到了这个Nullpoint异常错误。 关于Elline 198 我们将从jsonarray获取值,并将其添加到内容值中。

直到这一行,我将获取json响应的值,我已经在日志中打印了键和值。检查我是否得到任何空值。但这些值很好,我可以在日志中看到它们。当我的脱胶器进入下线时,我得到了错误。请帮我一次忙

    12-07 11:25:34.290: E/AndroidRuntime(9177): FATAL EXCEPTION: AsyncTask #2
12-07 11:25:34.290: E/AndroidRuntime(9177): java.lang.RuntimeException: An error occured while executing doInBackground()
12-07 11:25:34.290: E/AndroidRuntime(9177):     at android.os.AsyncTask$3.done(AsyncTask.java:200)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.lang.Thread.run(Thread.java:1096)
12-07 11:25:34.290: E/AndroidRuntime(9177): Caused by: java.lang.NullPointerException
12-07 11:25:34.290: E/AndroidRuntime(9177):     at com.UserLogin.Onaroundyou$getOnaroundyou.doInBackground(Onaroundyou.java:198)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at com.UserLogin.Onaroundyou$getOnaroundyou.doInBackground(Onaroundyou.java:1)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at android.os.AsyncTask$2.call(AsyncTask.java:185)
12-07 11:25:34.290: E/AndroidRuntime(9177):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
12-07 11:25:34.290: E/AndroidRuntime(9177):     ... 4 more
提前谢谢

Evalues.put(InsertData.MyName,JSonArray1.getJSONObject(i).getString("MyName"));
private TextView电视;
字符串str、用户名、Eresult、密码;
对话1;
数据库助手插入数据;
字符串属性ID;
Context mContext=这个;
sqliteedb数据库;
JSONObject MyUserJsonObject;
受保护的Void doInBackground(字符串…参数){
//TODO自动生成的方法存根
HttpClient HttpClient=新的DefaultHttpClient();
//Dh.getWritableDatabase();
String text1=getString(R.String.site\u name);
字符串Url=text1+“详细信息”;
HttpPost HttpPost=新的HttpPost(Url);
试一试{
HttpResponse responseGet=httpclient.execute(httppost);
HttpEntity实体=responseGet.getEntity();
如果(实体!=null){
InputStream inputStreamResponse=entity.getContent();
Eresult=convertStreamToString(inputStreamResponse);
系统输出打印项次(Eresult);
Edb=InsertEData.getWritableDatabase();
ContentValues Evalues=新ContentValues();
Evalues.clear();
MyUserJsonObject=新的JSONObject(Eresult);
JSONObject menuObject=MyUserJsonObject.getJSONObject(“UserDetails”);
attributeId=menuObject.getString(“登录”);
System.out.println(“属性”+attributeId);
如果(attributeId.equals(“成功”)){
JSONObject EObject=menuObject.getJSONObject(“Ulist”);
JSONArray-array=EObject.getJSONArray(“列表”);
系统输出打印LN(耳环);
System.out.println(array.length());
对于(inti=0;i
数组似乎返回空值


请保留日志并检查和控制台。

您的数组似乎返回空值

请保留日志并检查和控制

“有人知道为什么会发生这种情况吗?”

简单的回答是:因为某些对象是
null
,而它不应该是空的。潜在的罪魁祸首可能是
InsertData
JSonArray1
,或
JSonArray1.getJSONObject(i)
的结果

没有更多的细节,很难确定确切的原因。我建议您中断代码以查找问题

“有人知道为什么会发生这种情况吗?”

简单的回答是:因为某些对象是
null
,而它不应该是空的。潜在的罪魁祸首可能是
InsertData
JSonArray1
,或
JSonArray1.getJSONObject(i)
的结果


没有更多的细节,很难确定确切的原因。我建议您中断代码以查找问题。

但当我尝试打印值时,它会出现在logcat System.out.println(JSonArray1.getJSONObject(I.getString(“MyName”))中,但当我尝试打印值时,它会出现在logcat System.out.println(JSonArray1.getJSONObject(I.getString(“MyName”))问题中添加的代码请检查一次。我很困惑。是“我的名字”还是“名字”?我看不到代码中的第一行,而您声称导致错误的代码行确实如此。另外,您似乎在for循环中混合使用了
EventArray
array
——我看不到在任何地方声明/初始化前者。其他一些变量也是如此。最后,您不断地打印循环中的第一个JSONObject,如果您对实际内容感兴趣,这就没有什么意义了……是MyName,Array,我只是打印第一个JSONObject来检查值是否出现。这里我只发布了复制的doinbackground方法。第一个值可能会通过,这一事实对后面的值没有任何意义。它确实表明
array
不是
null
,因此您可能可以从列表中划掉该项。但是,如果看到空指针,很可能是 private TextView tv; String str, Username, Eresult,Password; ProgressDialog dialog1; DatabaseHelper InsertEData; String attributeId ; Context mContext = this; SQLiteDatabase Edb ; JSONObject MyUserJsonObject; protected Void doInBackground(String... params) { // TODO Auto-generated method stub HttpClient httpclient = new DefaultHttpClient(); // Dh.getWritableDatabase(); String text1 = getString(R.string.site_name); String Url=text1+"Details"; HttpPost httppost = new HttpPost(Url); try { HttpResponse responseGet = httpclient.execute(httppost); HttpEntity entity = responseGet.getEntity(); if (entity != null) { InputStream inputStreamResponse = entity.getContent(); Eresult = convertStreamToString(inputStreamResponse); System.out.println(Eresult); Edb= InsertEData.getWritableDatabase(); ContentValues Evalues = new ContentValues(); Evalues.clear(); MyUserJsonObject = new JSONObject(Eresult); JSONObject menuObject = MyUserJsonObject.getJSONObject("UserDetails"); attributeId = menuObject.getString("login"); System.out.println("attribute "+attributeId); if (attributeId.equals("success")) { JSONObject EObject = menuObject.getJSONObject("Ulist"); JSONArray EArray = EObject.getJSONArray("List"); System.out.println(EArray); System.out.println(EArray.length()); for (int i = 0; i < EArray.length(); i++) { //System.out.println(EArray.getJSONObject(0).getString("Name").toString()); Evalues.put(InsertEData.EName, EArray.getJSONObject(i).getString("MyName")); Evalues.put(InsertEData.ELocation, EArray.getJSONObject(i).getString("Location")); Evalues.put(InsertEData.ETotal, EArray.getJSONObject(i).getString("Total")); Evalues.put(InsertEData.Eimage, EArray.getJSONObject(i).getString("Image")); Edb.insert(InsertEData.ESLIST, null, Evalues ); } Evalues.clear(); inputStreamResponse.close(); }else { System.out.println("Unable to load page - " + responseGet.getStatusLine()); } } else System.out.println("Entity Null"); } catch (JSONException e) { // TODO Auto-generated catch block System.out.println("Network Error"); e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null;}