我一直在使用带有YAML的Spring Boot应用程序进行外部配置,到目前为止一直运行良好。玩具示例:
@Component
@ConfigurationProperties
class MyConfig {
String aaa;
Foo foo;
static class Foo {
String bar;
}
}
然后是一个具有以下属性的yaml文件:
aaa: hello
foo.bar: world
我的问题是我真的需要在我的配置中添加一个JsonObject。我首先尝试将其添加为MyConfig类中的一个字段,然后编写以下YAML文件,我相信它在语法上是有效的:
aaa: hello
from:
{
"first_initial": "D",
"last_initial": "E"
}
foo.bar: world
Spring抛出了以下错误:无法访问引用的属性中的索引值...
我最终使用了一个纯字符串而使用了>折叠标记将它放在YAML中,但这意味着我必须在我的代码中手动将字符串解析为JsonObject。
任何人都知道如何做到这一点?
答案 0 :(得分:1)
这应该有效:
@Component
@ConfigurationProperties
class MyConfig {
String aaa;
Foo foo;
String from;
static class Foo {
String bar;
}
// ... getters setters
public JsonObject getFromAsJson() {
// create object from "this.from"
}
}
aaa: hello
foo:
bar: world
from: |
{
"first_initial": "D",
"last_initial": "E"
}
和此:
aaa: hello
foo:
bar: world
from: "{\"first_initial\": \"D\", \"last_initial\": \"E\"}"
第一个版本会保留换行符。