シーケンス化かJSONか


最近はオリジナルAndroidアプリをやっていますが、アプリで必要なデータを書き出して(sdcardに載せて)、Web側でそのファイルをアップロード管理する機能があります.当時考えられていた解決策は2つあり,1つはオブジェクトをシーケンス化し,もう1つはJSON形式で保存することであった.ちょうど最近シーケンス化を見たので、まずシーケンス化案を試してみるつもりです.概略シーケンス化の方法は、次のリンクを参照してください.
https://www.cnblogs.com/xdp-gacl/p/3777987.html
文章は详しく书いて、それから本机の上でユニットテストをして通じることができて、金曜日の时にコードを提出して楽しく帰りました.
月曜日に同僚は私にフィードバックして、Web端でファイルの逆シーケンス化に失敗して、ClassNotFoundExceptionを間違えました.なぜなら、2つのエンティティクラスのパケットパスが異なるからです.
これは私の知識の範囲を超えているので、急いで解決策を探してください.
インターネットで調べたところ、シーケンス化と逆シーケンス化には2つの基本的な支持点があります.
1.パッケージ名が同じ
2.serialVersionUID.
APPとWeb端末はそれぞれ2つのプロジェクトなので、パッケージ名を同じにすることはできません.インターネットで解決方法を探しても、JSONを変えるしかありません.
jackson-mapper-1.9.5を使用しています.jarこのパッケージ
MAPPER.writeValueAsString()         JSON,       。

シーケンス化するときに特殊なタイプのフィールド(Geometry)があり、直接シーケンス化しても自分の欲しいものは生成されないので、ここではStringタイプに変換してファイルに入れる処理をしました.
使用するパッケージはarcgis-android-apiです.jar
String fg = GeometryEngine.geometryToJson(SpatialReference.create(SpatialReference.WKID_WGS84), result.getFeatureGeometry());

逆シーケンス化の場合、byteフィールドに特別な処理が必要なフィールドがあります.
byte[] jsonToByte =  java.util.Base64.getMimeDecoder().decode(byteString);
String url = new String(jsonToByte );

ここではjavaツールパッケージの方法を採用していますが、もしあなたのプロジェクトがalibabaのパッケージやApacheのパッケージを導入したら、似たような機能もあります.
これで、この機能は交差することができて、自分の知識の欠陥を調べて漏れを補うことができます.