【发布时间】:2015-04-09 22:24:13
【问题描述】:
对于解析数据,我使用 retrofit (gson) 库。我在解析 double value 'position' 时遇到问题。您可以在下面看到完整的 JSON。我解析字符串数组'words'很好,但有双值我在TextView中什么都没有。谁能说出到底哪里错了,我需要修复什么以及我错过了什么?
感谢您的帮助!
JSON
MainActivity.java
w3wNetworkFactory.w3wGetInstance().w3wGetApiCall().getPosition(w3w_API_KEY, new Words("gliders.inquest.hardly"), new Callback<PositionResponse>() {
@Override
public void success(PositionResponse positionResponse, Response response) {
position_w3w.setText(Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", ""));
//Log.d("w3w location: ", Arrays.toString(positionResponse.getPosition()));
String mLatLng = Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", "");
//Convert String to double
double value = Double.parseDouble(mLatLng);
//Set marker to map
mGoogleMap.addMarker(new MarkerOptions().position(value)
.title("Geolocation system")
.snippet("Your last current location which was available!")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_location)));
}
@Override
public void failure(RetrofitError error) {
error.toString();
}
});
PositionResponse.java
public class PositionResponse {
private double[] position;
public double[] getPosition() {
return position;
}
}
【问题讨论】:
-
我建议您将收到的值记录在
PositionResponse对象中。我刚刚测试了您的Arrays.toString(positionResponse.getPosition()).replaceAll("\\[|\\]", "")语句,它看起来像预期的那样工作。 -
你好,伙计。你的意思是这个说法不正确?我不完全理解你的想法。我还使用了 Log Log.d("w3w location: ", Arrays.toString(positionResponse.getPosition()));而不是 Arrays.toString(positionResponse.getPosition()).replaceAll("\[|\]", "") 只是为了查看 logcat 中的内容。不幸的是,我在 logcat 中也一无所有。你知道原因吗?
-
说法正确。我测试了它并且它有效。在
PositionResponse中记录double[] position的值,以确保它们被填充在那里。 -
你好!我发现了我的错误。就在这里 return String.format("%f,%f", words);愚蠢的错误。但我还有一个问题。正如您从 JSON 中看到的它的纬度和经度。我想在谷歌地图中设置标记,但这里有红线:.position(value) 你能再检查一下我的帖子吗?我更新了它。我又做错了什么。
-
我想我看到了这个问题。现在发布答案。
标签: java android json parsing android-parser