不幸的是,我解析的JSON数据中同时存在不同的命名策略。
{
"camelCaseData" : {
"someField" : 1
},
"snake_case_data" : {
"some_field" : 2
}
}
有没有可能为整个snakeCaseData
指定命名策略?或者另一种解决方案可以帮助避免通过@SerializedName
手动注解每个字段?
类似于以下内容
class Data {
CamelCaseData camelCaseData;
@GsonNamingPolicy(com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES )
SnakeCaseData snakeCaseData;
}
1条答案
按热度按时间daupos2t1#
我不知道你到底要问什么,但我想这可能会对你有所帮助。基本上,这需要你注解任何只包含snake大小写字段的类,以及任何包含camel大小写字段的类中的snake大小写字段。
首先,我们按照您的建议定义一个注解:
然后,我们将按照上面所描述的那样对类进行注解:
最后,我们定义了一个定制的
FieldNamingStrategy
,它检查字段和它的声明类是否有新的注解,如果有注解,就使用注解中定义的策略,否则就使用默认策略。然后,您可以在配置Gson时使用此策略:
这并不是你所要求的,但希望它能帮助你。我不相信有一种方法可以检查一个字段是否在声明它的类之外的级别上被注解。有一种方法可以达到你所要求的,但它可能需要使用自定义的
TypeAdapter
或TypeAdapterFactory
。