当我们用以下格式定义类时
public class Field {
@SerializedName("name")
public String name;
@SerializedName("category")
public String category;
}
对于JsonObject
内容
{
"name" : "string",
"category" : "string",
}
并使用Gson
来解析内容
Field field = new GsonBuilder().create().fromJson(
content, Field.class);
所以,我的问题是我们能不能用Gson
来得到@Serialized
的名字,因为在这个例子中,我想知道@Serialized
的名字是什么,对于field.name
是name
,对于field.category
是category
。
根据@Sotirios Delimanolis的建议,使用Reflection
我们可以获得Serialized
名称
java.lang.reflect.Field fields = Field.class.getDeclaredField("name");
SerializedName sName =fields.getAnnotation(SerializedName.class);
System.out.println(sName.value());
3条答案
按热度按时间l7wslrjt1#
使用反射来检索所需的
Field
对象。然后可以使用Field#getAnnotation(Class)
来获取SerializedName
示例,在该示例上可以调用value()
来获取名称。qqrboqgw2#
如果不使用
Field.class
进行解析,难道不能将其解析为JsonObject.class
吗?然后使用JsonObject.get()
:请注意,
.getAsString()
会将其作为不带嵌入式双引号的String返回,请将此与调用toString()
时的情况进行比较。我想做的一件事是序列化一个枚举字段,它不是一个对象。在这种情况下,你可以用
JsonElement.class
序列化,因为它只是一个原语:mqxuamgl3#
这是
alternate
的一种方式,例如,对于更复杂的示例枚举类
从替代项获取枚举
测试