我的应用没有显示来自网址的JSON数据

时间:2017-07-11 05:56:09

标签: android json

我是android工作室的新手,我正在尝试让我的简单应用程序从URL获取JSON数据,即在Android Studio中使用Volley从服务器获取JSON数据。当我在我的设备上调试时,它工作正常,但不显示任何数据,我确信有什么问题

我的代码:

package imo.meteoiraq;

import android.app.DownloadManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONException;
import org.json.JSONObject;

public class MainActivity extends AppCompatActivity {
RequestQueue rq;
TextView nameText,descriptionText,fbUrlText,youtubeUrlTxt;
    int humidity;
    int wind_speed;
    int temperature;
    String url="/stationlookupstation=I1410&units=metric&v=2.0&format=json";
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        rq= Volley.newRequestQueue(this);

        nameText= (TextView) findViewById(R.id.tempText);
        descriptionText = (TextView) findViewById(R.id.wind_speed);
        fbUrlText = (TextView) findViewById(R.id.humidity);
        sendjsonrequest();
    }
public void  sendjsonrequest(){
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                temperature = response.getInt("temperature");
                wind_speed= response.getInt("wind_speed");
                humidity= response.getInt("type");

                nameText.setText(temperature);
                descriptionText.setText(humidity);

            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });
    rq.add(jsonObjectRequest);
}
}

我的数据json:

{
  "stations": {
    "I1410": {
      "updated": 1499668936,
      "ageh": 0,
      "agem": 0,
      "ages": 58,
      "type": "PWS",
      "wind_dir_degrees": 315,
      "wind_speed": 6.1,
      "wind_gust_speed": 11.1,
      "humidity": 10,
      "temperature": 40.5,
      "precip_rate": null,
      "precip_today": 0,
      "pressure": 1002.26,
      "dewpoint": null,
      "windchill": null
    }
  }
}

3 个答案:

答案 0 :(得分:2)

首先获取JsonObject工作站和I1410,然后使用ages = I1410JO.getInt(“ages”);

JSONObject stationsJO = response.getJSONObject("stations");
JSONObject I1410JO = stationsJO.getJSONObject("I1410");
int ages = I1410JO.getInt("ages");

答案 1 :(得分:1)

该计划有2个问题。

Rasoul Miri已经解释过第1期关于访问StationsJO JSON对象然后是I1410JO JSON对象的问题。

第二个问题是温度不是整数格式,而是双格式,所以你需要使用I1410JO.getDouble(&#34; temperature&#34;)来获得它。

答案 2 :(得分:0)

您的网址中存在错误,但您未正确解析响应。使用正确的(GET或POST)方法发送正确的网址。