我试图从JSON文件中的字段中获取特定值。这是我第一次使用JSON文件,所以我不确定我是否正确使用它。
try {
URL url = new URL(API_URL + city +".json");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
try {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line).append("\n");
}
bufferedReader.close();
return stringBuilder.toString();
}
此块将从天气网站获取JSON,然后将JSON作为字符串返回。然后在下面使用该字符串。不幸的是,每当我在Android Studio中运行此应用程序并浏览日志时,日志会不断地说weather
中没有值。
protected void onPostExecute(String response) {
if(response == null) {
response = "THERE WAS AN ERROR";
}
progressBar.setVisibility(View.GONE);
Log.i("INFO", response);
responseView.setText(response);
// TODO: check this.exception
// TODO: do something with the feed
try {
JSONObject object = (JSONObject) new JSONTokener(response).nextValue();
String weather = object.getString("weather");
Toast.makeText(MyActivity.this, "There is rain", Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
我尝试做的是从weather
部分获取信息
Here是我尝试解析的JSON链接。这个文本框认为JSON响应中有太多链接供我在这里发布。我试图找出正在发生的事情,我们将非常感谢任何帮助。
答案 0 :(得分:2)
您可以打印response
以查看它是否完全是您的JSON。
假设您正确获取了JSON字符串。
JSONObject object = new JSONObject(response);
String weather = object.getString("weather");
但是,如果您获得的JSON完全是您的response
,则上述代码不起作用,因为没有weather
字符串。根只包含response
和current_observation
。
如果您在weather
下获得的内容为current_observation
,则应使用以下代码。
JSONObject object = new JSONObject(response);
JSONObject current_obs = object.getJSONObject("current_observation");
String weather = current_obs.getString("weather"); // Clear
答案 1 :(得分:1)
JSONObject object = (JSONObject) new JsonObject(responseString);
String weather = object.getString("weather");
答案 2 :(得分:0)
我有一个使用开放天气地图api完成的天气应用示例。这就是你要求的全部。
答案 3 :(得分:0)
首先,您需要以字符串形式获取响应。 现在,根据响应启动json解析。 要么 您也可以使用Gson类进行json解析。
从JSONObject获取json值:
JSONObject object = new JsonObject(response);
String weather= object.getString("weather");
用于解析JSONObject的代码片段。
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
从JSONArray获取json值:
JSONArray jsonarray = new JSONArray(response);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
String url = jsonobject.getString("url");
}
用于解析JsonArray的代码片段。
AsyncTask
希望它会帮助你。