package cn.itcast.ssm.util; import com.alibaba.fastjson.JSONObject; import freemarker.cache.StringTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.Version; import org.apache.commons.io.output.ByteArrayOutputStream; import org.apache.commons.lang.StringUtils; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.util.HashMap; import java.util.Map; /** * Created by luojie on 2018/3/28. */ public class TemplateUtil { private static final String BASE_PATH = "/template/"; private static final String SUFFIX = ".ftl"; private static Map<String, String> TEMPLATE_MAP = new HashMap<String, String>(); public static String getTemplate(String id) throws IOException { String template = TEMPLATE_MAP.get(id); if (StringUtils.isBlank(template)) { StringBuffer path = new StringBuffer(); path.append(BASE_PATH).append(id).append(SUFFIX); template = inputStream2String(TemplateUtil.class.getResourceAsStream(path.toString())); //template = StringUtils.deleteWhitespace(template); TEMPLATE_MAP.put(id, template); } return template; } /** * 将stream 转成字符串 * * @param is * @return * @throws IOException */ private static String inputStream2String(InputStream is) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); int i = -1; while ((i = is.read()) != -1) { baos.write(i); } return baos.toString(); } public static String getTemplate(String id, Object data) throws Exception { String source = getTemplate(id); Configuration cfg = new Configuration(new Version("2.3.23")); StringTemplateLoader loader = new StringTemplateLoader(); loader.putTemplate("", source); cfg.setTemplateLoader(loader); cfg.setDefaultEncoding("UTF-8"); Template template = cfg.getTemplate(""); StringWriter writer = new StringWriter(); template.process(JSONObject.toJSON(data), writer); source = writer.toString(); return source; } public static void main(String[] args) { String r = null; try { JSONObject data = new JSONObject(); data.put("loginId", "1234123"); data.put("password", "1234123"); data.put("location", "location"); data.put("data", data); r = TemplateUtil.getTemplate("1001", data); System.out.println(r); } catch (Exception e) { //e.printStackTrace(); } } }
<?xml version="1.0" encoding="utf-8" ?> <Account messageType="1001" secretKey="123"> <reqData> <loginId><#if loginId??>${loginId}</#if></loginId> <password><#if password??>${password}</#if></password> <#if location??><location>${location}</location></#if> <tradeSummary>test</tradeSummary> </reqData> </Account>
xml转json
<dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>xom</groupId> <artifactId>xom</artifactId> <version>1.2.5</version> </dependency>
r = TemplateUtil.getTemplate("32000001", data); System.out.println(r); XMLSerializer xmlSerializer = new XMLSerializer(); String json = xmlSerializer.read(r).toString(); JSONObject resultData = com.alibaba.fastjson.JSON.parseObject(json).getJSONObject("reqData"); System.out.println(resultData);