我正在尝试从本地服务器获取JsonObject,这是我的对象:
[
{
"id":2,
"latitude":34.042542,
"longitude":-4.997182,
"title":"zone1",
"icone":"http://192.168.1.50/Heloo/images/icone.png"
}
]
我想将3个变量( JsonLat 设置为纬度/ JsonLong 为双倍经度/ JsonName 为标题的字符串)但是执行我的应用程序后,我无法获得此值。
这是我的HttpManager类:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpManager {
public static String getData(String uri) {
BufferedReader reader = null;
try {
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
}
}
这是我的requestData()定义和MyTask类:
public void requestData(String uri) {
MyTask task = new MyTask();
task.execute(uri);
}
public class MyTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
// updateDisplay("Starting task");
//tasks.add(this);
}
@Override
protected String doInBackground(String... params) {
String content = HttpManager.getData(params[0]);
return content;
}
@Override
protected void onPostExecute(String result) {
try {
JSONArray cast = new JSONArray(result);
for (int i=0; i<cast.length(); i++) {
JSONObject Marker = new JSONObject(cast.get(i).toString());
JsonLat = Marker.getDouble("latitude");
Jsonlong = Marker.getDouble("longitude");
JsonName = Marker.getString("title");
}
} catch (JSONException e) {
e.printStackTrace();
}
}
@Override
protected void onProgressUpdate(String... values) {
// updateDisplay(values[0]);
}
}
编辑:我尝试使用try {}中的log.v显示值,我可以看到我的值,但是当我尝试使用try {}之外的值时,它不会工作,当我尝试将一个函数与JsonLat,Jsonlng,JsonName作为参数应用于try {}时,它不起作用似乎有一个问题与try {}或我不知道! !!!!
答案 0 :(得分:0)
实际上,当我尝试使用其他随机JSON数据时,这是有效的。我认为你的问题是使用getDouble()
方法。您可以使用getString()
方法将它们全部作为字符串。然后你可以用Java进行转换。