Mulesoft - 将 JSON 或 XML 属性文件加载到全局变量中
Mulesoft - Load a JSON or XML properties file into a global variable
我正在尝试将一个相对简单的配置文件加载到一个我可以通过 MEL 全局访问的变量中。我不想使用典型的属性字段,因为我的结构不平坦。
通过如下所示将文件作为 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>
关于适当或更好的方法的想法?
这是解决方案。
Class 文件:
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;
}
}
}
配置:
<spring:bean id="JSONUtil" class="com.example.JSONUtil" >
<spring:property name="in" value="classpath:client-configuration.json"/>
</spring:bean>
<spring:bean name="ClientConfiguration" factory-bean="JSONUtil" factory-method="getConfigAsMap" />
这是有效的,JSON配置作为地图加载。
我正在尝试将一个相对简单的配置文件加载到一个我可以通过 MEL 全局访问的变量中。我不想使用典型的属性字段,因为我的结构不平坦。
通过如下所示将文件作为 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>
关于适当或更好的方法的想法?
这是解决方案。
Class 文件:
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;
}
}
}
配置:
<spring:bean id="JSONUtil" class="com.example.JSONUtil" >
<spring:property name="in" value="classpath:client-configuration.json"/>
</spring:bean>
<spring:bean name="ClientConfiguration" factory-bean="JSONUtil" factory-method="getConfigAsMap" />
这是有效的,JSON配置作为地图加载。