我开发了一个Spring Boot应用程序。该应用程序可以部署到测试或prod环境,该应用程序使用REST API发出请求。我使用POJO作为包装器,JsonProperty注释包含要推送到的API的字段ID。
ie
@JsonProperty("field_001)
private String name;
@JsonProperty("field_002)
private String address;
这些值的字段标签在测试endpoint上不同。因此,测试endpoint可能希望属性映射为
@JsonProperty("field_005)
private String name;
@JsonProperty("field_006)
private String address;
我希望能够利用Spring Boot对基于概要文件的属性文件的本机支持。在运行时从外部属性文件中读取JsonProperty注释值。
所以举个例子,
应用程序中可能有三个文件。属性,应用测试。属性和application-prod.properties。Spring Boot可以根据“Spring.profiles.active”设置读取除vanilla属性文件之外的测试或产品属性。
...-test.properties将包含测试服务器字段的常量值。和...-prod.properties将包含产品服务器字段的常量值。
嵌套注释,如Spring的@Value标记,如下所示:
@JsonProperty(@Value("${property.file.reference.here}))
doesn't seem to work.
顺致敬意,
@JsonProperty(@Value(${property.file.reference.here}))
无法正常工作,因为:
@JsonProperty
使用String作为值,但是@Value
是一个'Annoation
',所以这不是一个String值,编写它会给你以下错误:
错误:(34,12)java:注释对java类型的元素无效。串
另外,当加载spring上下文时,@Value
将被“一次”加载。
编辑
如果您希望使用test/dev和prod属性,最好在您的测试资源包下创建一个属性文件,它们将被自动加载。(我就是这样使用的)。
实际上还有另一种方法,就是在运行时修改注释值。
问题内容: 我有一个与此类似的类层次结构: 像这样的json输入(我无法改变自己) 我正在像这样用Jackson解析Java中的JSON 我想使用JAVA / Jackson从JSON反序列化类A,B和其他类。JSON中没有嵌入类型信息(并且不能)。我不能在类上使用批注(我不拥有它们),我(相信)我不能使用混合包,因为可能有任意数量的类,例如A和B(混合包不是动态的)。好的是,反序列化代码知道哪个
你好,我有下一个json响应: 正如你所见,我有一个资源对象,里面有许多不同的对象,但这些对象可能会根据输入的不同而有所不同。我创建了下一个pojo: 在我的输入Pojo中: 导入java。util。列表 我将资源添加为对象列表,但我可以看到它是一个对象,其中包含不同的对象。如何将这些不同的对象映射到Java中的对象?事实上,我需要计算我有多少资源,但我正在努力实现这一目标。谢谢!
问题内容: Jackson with Jersey是否支持JSON上的多态类? 比方说,例如,我有一个Parent类和一个从其继承的Child类。而且,假设我要使用JSON通过HTTP发送和接收父级和子级。 我考虑过这种实现: 问题:如果我(当然通过JSON)给此函数一个Child对象,它将起作用吗?Child的多余成员字段也将被序列化吗?基本上,我想知道这些框架是否支持多态消费和响应。 顺便说一
问题内容: 我想序列化一个对象,以便根据字段的类型对字段之一进行不同的命名。例如: 在这里,我希望将该字段序列化为类似的内容,而不是总是根据情况将字段称为包含不同类型的字段。 使用Jackson怎么能达到这样的目的? 问题答案: 使用自定义。 然后,假设您要序列化以下两个对象: 第一个将打印: 第二个: 我使用了包装对象的名称,因为它仅用作花边固定器。如果要删除它,则必须为 整个 类编写一个自定义
问题内容: 我使用不同的数据库,并且根据数据库,我需要将“ id”命名为不同的名称。因此,例如在id中被命名为“ @rid” 对于MongoDB,该ID名为“ _id” 我不知道现代数据库开发人员有什么问题,不仅仅是命名id字段“ id” ^^。但是现在我有一个问题。在某些情况下,如何将ID字段动态序列化/反序列化为“ @rid”,在另一种情况下,如何动态序列化/反序列化为“ _id”? 编辑:
Spring Boot应用程序的任务是每隔这么多分钟更新一次远程集成API。此应用程序可以部署到测试或prod环境中,通过“application.properties”标志通知应用程序应该查看的endpoint。POJO被Jackson序列化并推送到endpoint,JsonProperty注释包含它被推送到的API的字段ID。 ie 这些值的字段标签在测试endpoint上不同。因此,测试en