2017-07-18 8 views
1

私はYMLプロパティでMap<String, Object>を使用するが、NULL値を持つマップ内のキーを入力できるようにするための要件を持っています。例えばキーとヌル値でymlのマップを定義するにはどうすればいいですか?

application.ymlは

.... 
init-services: 
    sample-service-discovery: 
    port: 8761 
    profiles: dev,prod 
    sample-config-server: 
    port: 8888 
    profiles: dev, test 
    sample-activation-service: 
    some-other-service: 
    port: 1234 
.... 

init-servicesMap<String, ServiceProperties>あります。

ServicePropertiesInteger port, List<String> profilesとちょうどPOJOです。

最初の2つのエントリは正常にコンパイルされますが、sample-activation-serviceにはCannot convert value of type 'java.lang.String' to required type PathProperties$ServicePropertiesの例外があります。

質問:キーだけを持っていますが、null値がnullである.ymlマップにエントリを持つことを可能にする方法はありますか?その値がnullであっても、後でキーを反復処理する必要があります。

+0

「null」のYAMLキーを持つことはできますが、それは非文字列のスカラーになります。あなたは私にterminisのcontradictioのように見える "null値の文字列キー"をしてもよろしいですか? – Anthon

+0

私はnullキーを必要としません、私はキーのnull値が必要です。つまり、コード内にあれば、 'map.get(" sample-activation-service ")'は 'null'を返します。私の言い訳が十分に明確でない場合、私は示唆/編集に開放されています。私はそれをより明確にしようと試みて質問を編集しました。それが役に立ったら教えてください。 – maydawn

+0

申し訳ありませんが、Javaを使用して生成する方法がわかりません。 '{null:1、True:x、x:42}'は有効なYAMLです。もちろん、マッピングのキーは一意でなければならないので、どのマッピングにも1つの 'null'キーしか持てません。 – Anthon

答えて

1

私は、パラメータとして文字列を受け取り、デフォルトのコンストラクタを呼び出しServicePropertiesにコンストラクタを追加することによってこの問題を回避するために管理。

public ServiceProperties(String empty) {this();} 
関連する問題