2016-11-02 34 views
0

我試圖將一個相對簡單的配置文件加載到一個變量中,我可以通過MEL全局訪問該變量。我不想使用典型的屬性字段,因爲我的結構不平坦。Mulesoft - 將JSON或XML屬性文件加載到全局變量中

我能夠通過如下方式將文件加載爲一個bean,但這使我留下了一個巨大的字符串,而不是散列表(我可以看到爲什麼,我只是不知道如何解決它):

<spring:bean id="ClientConfiguration" name="ClientConfiguration" class="java.lang.String" scope="singleton"> 
     <spring:constructor-arg> 
      <spring:bean id="Test" name="org.springframework.util.FileCopyUtils" class="org.springframework.util.FileCopyUtils" factory-method="copyToByteArray"> 
       <spring:constructor-arg type="java.io.InputStream" value="classpath:client-configuration.json"/> 
      </spring:bean> 
     </spring:constructor-arg> 
    </spring:bean> 

有關適當或更好的方法來做到這一點的想法?

+0

所以你想在外部文件的上下文中有一個可用的散列表? –

+0

是的,基本上。 –

回答

2

這是解決方案。

類文件:

package com.example; 

import java.io.File; 
import java.util.HashMap; 
import java.util.Map; 

import org.codehaus.jackson.map.ObjectMapper; 
import org.codehaus.jackson.type.TypeReference; 


public class JSONUtil { 

    File in; 
    public File getIn() { 
     return in; 
    } 
    public void setIn(File in) { 
     this.in = in; 
    } 

    public Map<String, Object> getConfigAsMap(){   
     try{ 
      ObjectMapper mapper = new ObjectMapper(); 
      TypeReference<HashMap<String,Object>> typeRef = new TypeReference<HashMap<String,Object>>() {}; 

      Map<String, Object> map = mapper.readValue(in, typeRef); 
      System.out.println(map); 
      return map; 
     } catch(Exception exception){ 
      exception.printStackTrace(); 
      return null; 
     } 
    } 
} 

配置:

​​

這是工作和JSON配置加載爲地圖。