2016-04-25 8 views
2

私は2つのjsonファイルを持っています。versions.jsonは変数とそれぞれの値を含み、deploy.jsonはこれらの変数のプレースホルダを含んでいます。現在、私はjacksonを通じてJSONをロードして、Propertiesに保存し、PropertyPlaceholderHelperを使用して解決しています。別のJSONからJSONの変数を解決するにはどうすればよいですか?

versions.json

{ 
    "version1" : "0.1", 
    "version2" : "0.2" 
} 

deploy.json

{ 
    "package1" : "$version1", 
    "package2" : "$version2" 
} 

Javaコード:

Properties props = new Properties(); 
props.put("version1", versions.getVersion1()); 
props.put("version2", versions.getVersion2()); 

// Now resolving something like 
PropertyPlaceholderHelper.resolvePlaceholder(deploy, props); 

私の問題は、私は新しいパッケージが追加されていたときに私のコードを更新する必要があります。コードを更新せずにこれらの変数を解決するにはどうすればよいですか?

答えて

0

JSONファイルをプロパティとしてロードすることで解決策を得ました。

ObjectMapper mapper = new ObjectMapper(); 
TypeReference<Properties> buildVersionsTypeReference = new TypeReference<Properties>() { }; 
Object object = mapper.readValue(jsonString, typeRef); 
if (object instanceof Properties) { 
     return (Properties) object; 
    } 

以前の私はBuildVersionのためのカスタムクラスを持っていると私はBuildVersionオブジェクトにJSONをロードし、プロパティに各メンバーを追加しています。今私はPropertiesに直接ロードしてPropertyPlaceholderHelperに渡しています。

PropertyPlaceholderHelper.resolvePlaceholder(deploy, properties); 
関連する問題