Java 在TextView中解析双精度值并设置

Java 在TextView中解析双精度值并设置,java,android,json,parsing,android-parser,Java,Android,Json,Parsing,Android Parser,对于解析数据,我使用改进的gson库。我在解析双值“position”时遇到问题。您可以在下面看到完整的JSON。我解析字符串数组“words”很好,但在TextView中没有双值。谁能说出到底哪里出了问题,我需要修复什么,我错过了什么 谢谢你的帮助 JSON MainActivity.java 试着用double。长的是整数。在JSON数字中使用浮点数。要回答有关Google地图的问题,需要将lat和lon分开,并创建一个。我认为应该是这样的: @Override

对于解析数据,我使用改进的gson库。我在解析双值“position”时遇到问题。您可以在下面看到完整的JSON。我解析字符串数组“words”很好,但在TextView中没有双值。谁能说出到底哪里出了问题,我需要修复什么,我错过了什么

谢谢你的帮助

JSON

MainActivity.java


试着用double。长的是整数。在JSON数字中使用浮点数。

要回答有关Google地图的问题,需要将lat和lon分开,并创建一个。我认为应该是这样的:

    @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("\\[|\\]", "");

                    String[] arrLatLng = mLatLng.split(","); //separate out lat and lon
                    LatLng latLon = new LatLng(Double.parseDouble(arrLatLng[0]), Double.parseDouble(arrLatLng[1])); //create the LatLng object

                    //Convert String to double
                    //double value = Double.parseDouble(mLatLng); this wouldn't work, you need to do both values individually
                    //Set marker to map, use LatLng object latLon
                    mGoogleMap.addMarker(new MarkerOptions().position(latLon)
                            .title("Geolocation system")
                            .snippet("Your last current location which was available!")
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_location)));

                     CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLon).zoom(12).build();


                     mGoogleMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));
                }

有关完整设置Google Maps API的更多详细信息,请参见此处我的另一个答案:

我在PositionResponse类中使用了double,但结果与之前相同。我什么都不是。您还有其他想法吗?我建议您将收到的值记录在PositionResponse对象中。我刚刚测试了你的数组.toStringpositionResponse.getPosition.replaceAll\\[\124;\\\]语句,它看起来像预期的那样工作。你好。你是说那句话不对?我不完全理解你的想法。我还使用了Log.dw3w location:,Arrays.toStringpositionResponse.getPosition;而不是Arrays.toStringpositionResponse.getPosition.replaceAll\[| \],只是看看logcat中会有什么。不幸的是,我在logcat里也没有任何东西。你知道原因吗?陈述是正确的。我对它进行了测试,效果良好。在PositionResponse中记录double[]position的值,以确保它们在其中填充。喂,伙计!我发现了我的错误。它在这里返回字符串。格式%f,%f,单词;愚蠢的错误。但我还有一个问题。正如您从JSON中看到的,它的纬度和经度。我想在谷歌地图上设置标记,但这里有红线:.positionvalue你能再次查看我的帖子吗。我更新了它。我又做错了什么。我想我看到了问题所在。现在发布答案。谢谢!这对我有帮助=
public class PositionResponse {
    private double[] position;

    public double[] getPosition() {
        return position;
    }
}
    @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("\\[|\\]", "");

                    String[] arrLatLng = mLatLng.split(","); //separate out lat and lon
                    LatLng latLon = new LatLng(Double.parseDouble(arrLatLng[0]), Double.parseDouble(arrLatLng[1])); //create the LatLng object

                    //Convert String to double
                    //double value = Double.parseDouble(mLatLng); this wouldn't work, you need to do both values individually
                    //Set marker to map, use LatLng object latLon
                    mGoogleMap.addMarker(new MarkerOptions().position(latLon)
                            .title("Geolocation system")
                            .snippet("Your last current location which was available!")
                            .icon(BitmapDescriptorFactory.fromResource(R.drawable.icon_location)));

                     CameraPosition cameraPosition = new CameraPosition.Builder()
                        .target(latLon).zoom(12).build();


                     mGoogleMap.animateCamera(CameraUpdateFactory
                        .newCameraPosition(cameraPosition));
                }