Json 我无法转换API密钥的JSObject
我正在使用的APi为Json 我无法转换API密钥的JSObject,json,api,Json,Api,我正在使用的APi为 我想从API中获得特定的天气部分,如下代码所示,因此我使用JSON 下面的链接是我想要的天气部分的API密钥 无法将org.json.JSONObject$1类型的值null转换为JSONObject 我正在使用异步任务 我的主要活动在这里 公共类MainActivity扩展了AppCompatActivity{ String data ; @Override protected void onCreate(Bundle savedInstanceState) {
我想从API中获得特定的天气部分,如下代码所示,因此我使用JSON
下面的链接是我想要的天气部分的API密钥
无法将org.json.JSONObject$1类型的值null转换为JSONObject
我正在使用异步任务 我的主要活动在这里 公共类MainActivity扩展了AppCompatActivity{
String data ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DownloadWeatherData downloadWeatherData = new DownloadWeatherData();
try {
downloadWeatherData.execute("http://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b1b15e88fa797225412429c1c50c122a1").get();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这是我的java文件
公共类DownloadWeatherData扩展异步任务{
String weatherdata;
@Override
protected String doInBackground(String... urls)
{
try {
URL url = new URL(urls[0]);
HttpURLConnection connection =(HttpURLConnection) url.openConnection();
connection.connect();
InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream());
int data = inputStreamReader.read();
while(data!=-1)
{
char str = (char)data;
weatherdata+=str;
data = inputStreamReader.read();
}
return weatherdata;
}
catch (MalformedURLException e)
{
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s)
{
super.onPostExecute(s);
try {
JSONObject jsonObject = new JSONObject(s);
String info = jsonObject.getString("weather");
Log.d("weatherpart",info);
} catch (JSONException e) {
e.printStackTrace();
}
}
}你做错了Weather是一个数组,不是一个json对象。这样做:
JSONObject jsonObj = new JSONObject(s);
JSONArray ja_data = jsonObj.getJSONArray("weather");
int length = ja_data.length();
for(int i=0; i<length; i++) {
JSONObject jsonObj = ja_data.getJSONObject(i);
.
.
.
}
JSONObject jsonObj=新的JSONObject;
JSONArray ja_data=jsonObj.getJSONArray(“天气”);
int length=ja_data.length();
对于(int i=0;iI)我认为改型是HttpURLConnection的替代方案,我已经删除了try-and-catch块,即使上面显示了相同的错误