Sar*_*yan 6 java serialization static android json
我尝试使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
返回值的JsonTest类方法ToJson()是空的.如果我将staticField字段声明更改为非静态,它将按预期工作.考虑为什么静态字段没有被序列化,是否应该将其视为错误?或者它被认为是不必要的?
如果我有一个列表,JsonTest我不希望静态字段解析和写入多次,但一次.但是,它不是比错过它更好吗?
dvr*_*vrm 16
但是如果有人想要包含静态,请将构建器更改为忽略瞬态,因为您将覆盖瞬态和静态的默认值.
GsonBuilder gsonBuilder = new GsonBuilder();
// Allowing the serialization of static fields
gsonBuilder.excludeFieldsWithModifiers(java.lang.reflect.Modifier.TRANSIENT);
// Creates a Gson instance based on the current configuration
Gson gson = gsonBuilder.create();
String json = gson.toJson(objectToSerialize);
System.out.println(json);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8544 次 |
| 最近记录: |