Gson中的java可配置@SerializedName
我可以从配置文件等获取@SerializedName
值吗
我的意思是:
@SerializedName(value = configProfider.getJsonFieldName())
private String myField
谢谢
你可以在下面搜索框中键入要查询的问题!
我可以从配置文件等获取@SerializedName
值吗
我的意思是:
@SerializedName(value = configProfider.getJsonFieldName())
private String myField
谢谢
# 1 楼答案
我的评论尤其错误:这在Gson中是可能的,但在
@SerializedName
(由于Gson内部的工作方式)和非编译时表达式(由于Java限制)中是不可能的。抱歉搞混了。Gson支持自定义字段命名策略,您可以在配置Gson
实例时提供该策略考虑以下自定义注释:
现在只需实施你的策略:
创建注释:
如何使用(基于系统属性的示例):
此示例将失败,除非您执行以下操作:
System.setProperty("gson.model.field", "dynamic");
那样以编程方式定义gson.model.field
系统属性李>-D
参数定义系统属性:-Dgson.model.field=dynamic
李>考虑下面的JSON(上面引用为^ {CD7>}):
设置
@DynamicSerializedName
注释并正确配置相应属性后,输出将为:一旦从DTO字段中删除
@DynamicSerializedName
注释,或用@SerializedName
注释该字段(从Gson 2.8.0开始,它具有更高的优先级),输出将是: