Java JSON解析在Android应用程序脱机时崩溃
我尝试在我的android应用程序中解析JSON,它在连接互联网时工作正常。但是当我在没有互联网的情况下打开应用程序时,它崩溃了 我正在调试代码,当它到达这个部分时Java JSON解析在Android应用程序脱机时崩溃,java,android,json,Java,Android,Json,我尝试在我的android应用程序中解析JSON,它在连接互联网时工作正常。但是当我在没有互联网的情况下打开应用程序时,它崩溃了 我正在调试代码,当它到达这个部分时jArr=newjsonarray(json)(在convertStringToJSON(json)funtion中),应用程序崩溃 从何处调用函数的代码 copyInputStreamToFile 读取文件 convertStringToJSON LogCat 编辑 这是我调试产生问题的代码时的堆栈跟踪 我不知道为什么它指的是LIN
jArr=newjsonarray(json)
(在convertStringToJSON(json)
funtion中),应用程序崩溃
从何处调用函数的代码
copyInputStreamToFile
读取文件
convertStringToJSON
LogCat
编辑
这是我调试产生问题的代码时的堆栈跟踪
我不知道为什么它指的是LINKEDIN
有什么想法吗
谢谢使用LogCat检查与崩溃相关的Java堆栈跟踪:。如果您不理解堆栈跟踪告诉您的内容,请编辑您的问题并粘贴到堆栈跟踪中,并指出问题中的代码与堆栈跟踪中的行相对应。谢谢您的回答,我已编辑了我的问题。它只是说
04-07 21:15:53.790 14868-14923/pk.org.ascii.ascii W/dalvikvm﹕ threadid=11:线程退出时出现未捕获异常(group=0x415e1c80)
我可能错了,请帮助我找出错误。感谢这不是Java堆栈跟踪。如果您在Android Studio的Android Monitor视图(您在其中看到LogCat)中启用了“仅显示此应用程序”过滤,请将其关闭,但设置“错误”过滤器,然后查找Java堆栈跟踪。如果您的应用程序未使用LinkedIn,则我认为您复制了错误的堆栈跟踪,但这些错误确实有意义,将您的设备视为无法访问网络以解析主机名。是否确定new JSONArray(json)代码>是错误的来源吗?我很好奇,因为LogCat说线程退出是因为一个未捕获的异常。实际上,您正在尝试捕获一个异常。
if(MainActivity.isupdateAvailable) {
jsonparser.copyInputStreamToFile(songUrl, songFileName, mainActivity);
jArr = jsonparser.readFile(songFileName, mainActivity);
}
else{
jArr = jsonparser.readFile(songFileName, mainActivity);
}
}
public void copyInputStreamToFile( String url, String filename, Context context ) {
createConnection(url);
try {
FileOutputStream fos = context.openFileOutput(filename, Context.MODE_PRIVATE);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
int line = 0;
int a = 0;
while ((line = reader.read()) != -1) {
fos.write(line);
a++;
}
fos.close();
is.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public JSONArray readFile(String filename, Context context){
try {
FileInputStream fis = context.openFileInput(filename);
InputStreamReader isr = new InputStreamReader(fis, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr);
StringBuilder sb = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
sb.append(line).append("\n");
}
json = sb.toString();
convertStringToJSON(json);
fis.close();
is.close();
return jArr;
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return null;
}
private void convertStringToJSON(String json){
try {
jArr = new JSONArray(json);
}
catch (Exception e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
}
04-07 21:15:53.790 14868-14923/pk.org.ascii.ascii W/dalvikvm﹕ threadid=11: thread exiting with uncaught exception (group=0x415e1c80)
04-07 21:43:44.610 8094-8148/? E/OkHttpStack﹕ Invalid url / host name https://www.linkedin.com/voyager/api/lixTreatments?nc=1460047424620
04-07 21:43:44.620 8094-8145/? E/OkHttpStack﹕ Invalid url / host name https://www.linkedin.com/voyager/api/growth/pageContent/new-to-voyager?nc=1460047424621
04-07 21:43:44.630 8094-8150/? E/OkHttpStack﹕ Invalid url / host name https://www.linkedin.com/voyager/api/feed/updates?q=findRecentFeed&count=20&moduleKey=home-feed%3Aphone&queryAfterTime=1460044486149&tabType=feed&nc=1460047424631
04-07 21:43:44.650 8094-8149/? E/OkHttpStack﹕ Invalid url / host name https://www.linkedin.com/voyager/api/mux?nc=1460047424654
04-07 21:43:44.650 8094-8150/? E/OkHttpStack﹕ Invalid url / host name https://www.linkedin.com/voyager/api/growth/pageContent/voyager_abi_autosync_toast?nc=1460047424656
04-07 21:43:44.710 8094-8094/? E/LixManagerImpl﹕ Error in network response for lix type 1