2017-05-09 58 views
0

我一直在使用YAML的Spring Boot應用程序進行外部配置,至今爲止這一切都非常順利。玩具例子:如何使用嵌套JSON編寫Spring Boot YAML配置?

@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 

春季投用下列錯誤:引用的屬性不能訪問索引值。 ..

我終於採取了一個簡單的字符串,而不是使用>摺疊標籤將其放入YAML,但這意味着我必須手動將字符串解析爲JSONObject在我的代碼中。

任何人有一個想法如何做到這一點?

回答

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\"}" 

的第一個版本將保留換行符。

+0

謝謝你的努力來回答我的問題。我目前使用>字符將JSON視爲字符串,但我真的希望將它作爲真正的JSON來利用編輯器語法突出顯示和驗證。該文檔驗證爲YAML文件,但Spring不喜歡將其作爲配置文件讀取。 – deinspanjer

相關問題