gson出力フィールドの順序を変更する
1449 ワード
この間出会った問題は今みんなと分かち合います.具体的には以下の通りです.
以上はセンサタイプデータを記録するjson文字列で、gsonでjson文字タイプをすばやくエクスポートするもので、文字順をtime,sensorType,floatsの順に変更する必要があります.ネットで調べてみると、gsonはfastjsonのようにフィールドの使い方を変更していませんが、フレームワークを変更するのは面倒です.最後に方法を見つけたwrite()では、具体的なコードを見てみましょう
初期化でクラスに入力されたオブジェクト
これで最後に得られたjson文字列は
{"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]"}