1

我正在使用 Gson 将包含两个的类转换GeoPoints为 JSON 字符串。下面的代码在我的类中实现LocationListener......

lat = (float) loc.getLatitude();
lng = (float) loc.getLongitude();
alt = (float) loc.getAltitude();

GeoPoint nextGeoPoint = new GeoPoint((int)(lat * 1E6), (int)(lng * 1E6));
MapPlot mapleg = new MapPlot();
mapleg.fromPoint = LastGeoPoint;
mapleg.toPoint = nextGeoPoint;              

Gson gson = new Gson();
String jsonString = gson.toJson(mapleg); //convert the mapleg class to a json string

我期望 JSON 字符串有两组纬度和经度,但生成了以下 JSON 字符串......

{"fromPoint":{"mMapPoint":{"latitudeE6":33736724,"longitudeE6":-118101837,"pixelCoordX":92309232,"pixelCoordY":214935878}},"toPoint":{"mMapPoint":{"latitudeE6":37422004,"longitudeE6":-122084091,"pixelCoordX":86370464,"pixelCoordY":208176089}}}

像素坐标是什么?上的文档GeoPoint与像素没有任何关系。当我稍后获取这些数据并将其绘制在 a 上时,我会解决这个问题,mapView但我还没有到达那里。奇怪的。

4

1 回答 1

0

GSON 查看对象上的字段而不是 getter 方法,GeoPoints 实际上具有那些私有字段以及您感兴趣的那些。请参阅此处以获取使这些字段在 GeoPoint 上可访问的请求:http:// code.google.com/p/android/issues/detail?id=21327

所以 GSON 基本上试图序列化对象的整个状态,但你只想要外部可见的东西。您可以通过创建 Gson 对象来更改行为,如下所示:

GsonBuilder().excludeFieldsWithModifiers(Modifier.PRIVATE, Modifier.PROTECTED).create();
于 2012-10-15T00:37:18.850 回答