次のようにgoogle.gson.GsonBuilderを使用してオブジェクトをシリアル化してみました。
public class JsonHelper
{
public static String ToJson(Object o, Type oType)
{
Gson gson = new().setPrettyPrinting().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
gson.toJson(o, oType);
}
}
public class JsonTest
{
public static String staticField;
public static String ToJson()
{
JsonTest newJsonTest = new JsonTest();
newJsonTest.staticField = TelephoneStatus.GetPhoneIMEI(); // let's say we use static field to keep IMEI
Type oType = new TypeToken<JsonTest>(){}.getType();
return JsonHelper.ToJson(newJsonTest, oType);
}
}
JsonTest
クラスメソッドの戻り値はToJson()
空です。staticField
フィールド宣言を非静的に変更すると、期待どおりに機能します。静的フィールドがシリアル化されない理由を考えると、それはバグと見なされるべきですか?それとも不要と思われますか?
リストがあれば、JsonTest
静的フィールドを複数回解析および書き込みすることは期待できませんが、1回だけです。しかし、それを見逃すよりはましではないでしょうか。