Android 如何从JSON中获取特定值?
我试图从JSON文件中的字段中获取特定值。这是我第一次使用JSON文件,所以我不确定是否正确Android 如何从JSON中获取特定值?,android,json,Android,Json,我试图从JSON文件中的字段中获取特定值。这是我第一次使用JSON文件,所以我不确定是否正确 try { URL url = new URL(API_URL + city +".json"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); try { BufferedReader bufferedReader = new BufferedReader(
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();
}
JSONObject object = new JSONObject(response);
String weather = object.getString("weather");
此块将从天气网站获取JSON,然后以字符串形式返回JSON。该字符串将在下面使用。不幸的是,每当我在Android Studio中运行这个应用程序并查看日志时,日志总是说天气没有任何价值
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
部分获取信息
是我试图解析的JSON链接。这个文本框认为JSON响应中的链接太多,我无法在这里发布。我正在试图弄清楚到底发生了什么,任何帮助都将不胜感激。您可以打印出
响应
,看看它是否就是您的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();
}
JSONObject object = new JSONObject(response);
String weather = object.getString("weather");
但是,如果您获得的JSON正是您的响应
,则上述代码不起作用,因为没有天气
字符串。根目录仅包含响应
和当前观察
如果要获得的是当前观测下的天气
,则应使用以下代码
JSONObject object = new JSONObject(response);
JSONObject current_obs = object.getJSONObject("current_observation");
String weather = current_obs.getString("weather"); // Clear
我有一个使用开放天气图api完成的天气应用示例。这就是你想要的一切
代码如下:
首先,您需要获取字符串形式的响应。
现在,根据响应启动json解析。
或
您也可以使用Gson类进行json解析
从JSONObject获取json值:
{"weather":"sunny"}
解析JSONObject的代码段
JSONObject object = new JsonObject(response);
String weather= object.getString("weather");
从JSONArray获取json值:
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
解析JsonArray的代码片段
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 JSONArray=新的JSONArray(响应);
for(int i=0;i
希望对您有所帮助。您是否尝试使用JSONObject object=new JSONObject(response)
?是的,我刚刚调整了代码。JSONObject对象=新的JSONObject(响应);字符串日期=object.getString(“天气”);同样的事情对天气没有价值。