gpt4 book ai didi

java - 尝试从异步类 android 中的 url 解析 JSON 数据时出现空指针异常

转载 作者:行者123 更新时间:2023-12-01 10:09:21 25 4
gpt4 key购买 nike

有人可以解释或更正为什么我在异步类中遇到空指针异常吗?我试图从 URL 获取数据,但得到 162 的空指针异常,其中包含以下代码

int lengthJsonArr = jsonMainNode.length();

我不确定为什么会这样,但如果有人可以提供帮助那就太好了。或者如果有人可以向我展示一个更好的替代方案来从 url 获取 json 数据,这也会有很大的帮助。

public class userTask extends AsyncTask<String, Void, Void>{
HttpURLConnection connection = null;
private String Content;
@Override
protected Void doInBackground(String... urls) {

BufferedReader reader = null;
try {
URL url = new URL(urls[0]);
connection = (HttpURLConnection) url.openConnection();
connection.connect();

InputStream stream = connection.getInputStream();

reader = new BufferedReader(new InputStreamReader(stream));

StringBuffer buffer = new StringBuffer();

String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
} Content = buffer.toString();


} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (connection != null) {
connection.disconnect();
}
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
}

}
return null;
}

@Override
protected void onPostExecute(Void s) {
super.onPostExecute(s);

String OutputData = "";
JSONObject jsonResponse;

try {
jsonResponse = new JSONObject(Content);
JSONArray jsonMainNode = jsonResponse.optJSONArray("Android");

int lengthJsonArr = jsonMainNode.length(); //This is causing the exception

for (int i =0; i < lengthJsonArr; i++) {
JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
String name = jsonChildNode.optString("name").toString();
Double longitude = jsonChildNode.optDouble("lon");
Double latitude = jsonChildNode.optDouble("lat");

OutputData += " Name : "+ name +" "
+ "Longitude : "+ longitude +" "
+ "Latitude : "+ latitude +" "
+"-------------------------------------------------- ";

//Show Parsed Output on screen (activity)
Toast toast = Toast.makeText(getApplicationContext(), OutputData, Toast.LENGTH_LONG);
toast.show();


}
} catch (JSONException e) {
e.printStackTrace();
}
}
}

最佳答案

这不是在 android 中获取 JSON 数据的好方法。您应该使用 Volley 或 Retrofit 库。这些库将比普通代码准确高效地工作。

获取数据时有很多事情需要注意。一切都将由图书馆完成。您只需要编写几行代码即可。

您可以在 Google 上关注许多优秀的教程。

关于java - 尝试从异步类 android 中的 url 解析 JSON 数据时出现空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36236808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com