【发布时间】:2019-06-01 08:10:25
【问题描述】:
我从带有 json 的 api 获取一些信息,并将其添加到一些变量上。问题是我不知道如何在其他类中使用它们。这是我的 AsyncTask 类
class TestJson extends AsyncTask<String,String,String> {
public static String aJsonString;
@Override
protected String doInBackground(String... strings) {
ArrayList<Geocode> geocodes = null;
DefaultHttpClient httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost("https://developers.zomato.com/api/v2.1/geocode?lat=40.712776&lon=-74.005974");
httppost.setHeader("user-key", "mykey");
InputStream inputStream = null;
String result = null;
try {
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
result = sb.toString();
JSONObject jObject = new JSONObject(result);
JSONObject jsonObject= (JSONObject) jObject.get("location");
//for nested json objects
String title=(String)jsonObject.get("city_name");
aJsonString = jObject.getString("link");
} catch (Exception e) {
} finally {
try {
if (inputStream != null) inputStream.close();
} catch (Exception squish) {
}
}
try {
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
例如,我将 aJsonString 设为静态,但如果我在其他任何地方调用它,它都会给我 null。对此有什么想法吗?
【问题讨论】:
-
你知道解析成功了吗?尝试在分配
aJsonString之前放置一条日志语句。值正确吗? -
是的,我得到了我想要的(我使用了日志),但我不能在其他任何地方使用变量
-
@I.Renk 我做错了我不知道。你给我的界面示例不起作用:/
标签: android json variables android-asynctask