1

Gsonを使用して、2つ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

緯度と経度の2セットのJSON文字列を期待していましたが、次のJSON文字列が生成されます...

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

ピクセル座標とは何ですか?のドキュメントにGeoPointは、ピクセルとは何の関係もありません。後でこのデータを取得してプロットするときにこの問題に対処しますmapViewが、まだそこに到達していません。変。

4

1 に答える 1

0

GSONは、getterメソッドではなく、オブジェクトのフィールドを調べます。GeoPointには、実際には、これらのプライベートフィールドと、関心のあるフィールドがあります。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 に答える