gpt4 book ai didi

java - 为什么不使用 google.gson.GsonBuilder JSON 解析器序列化静态字段?

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:30 24 4
gpt4 key购买 nike

我尝试使用 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 字段声明更改为 non-static,它会按预期工作。考虑到为什么静态字段没有被序列化,是否应该将其视为一个错误?还是认为没有必要?

如果我有一个 JsonTest列表,我不会期望静态字段被解析和写入多次,但一次。但是,这不是比完全错过更好吗?

最佳答案

但如果有人想要包含静态,请将构建器更改为仅忽略 transient ,因为您会将 transient 和静态的默认值覆盖为仅 transient 。

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);

关于java - 为什么不使用 google.gson.GsonBuilder JSON 解析器序列化静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14644860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com