gson出力フィールドの順序を変更する

1449 ワード

この間出会った問題は今みんなと分かち合います.具体的には以下の通りです.
{"floats":[1.2482147,1.8486938,8.792648],"sensorType":"TYPE_ACCELEROMETER","time":171121101551270}

以上はセンサタイプデータを記録するjson文字列で、gsonでjson文字タイプをすばやくエクスポートするもので、文字順をtime,sensorType,floatsの順に変更する必要があります.ネットで調べてみると、gsonはfastjsonのようにフィールドの使い方を変更していませんが、フレームワークを変更するのは面倒です.最後に方法を見つけたwrite()では、具体的なコードを見てみましょう
 public class SensorTypeAdapter extends TypeAdapter {

        @Override
        public void write(JsonWriter out, SensorModule value) throws IOException {
            out.beginObject();
            //            
            out.name("time").value(value.time);
            out.name("sensorType").value(value.sensorType);
            out.name("floats").value(value.floats.toString());
            out.endObject();
        }

        @Override
        public SensorModule read(JsonReader in) throws IOException {
            return null;
        }
    }

初期化でクラスに入力されたオブジェクト
  gson = new GsonBuilder()
                .registerTypeAdapter(SensorModule.class, new SensorTypeAdapter())
                //registerTypeAdapter      
                .create();

これで最後に得られたjson文字列は
{"time":171121103946789,"sensorType":"TYPE_ACCELEROMETER","floats":"[2.6871338, 5.106003, 7.918762]"}