freemark(1)

327 阅读1分钟

import java.io.IOException;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

import freemarker.cache.StringTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;


public class FreemarkerTest {
	
	
	/**
	 * 循环List 必须要有as别名(例如as name)
	 * 判断还有下一项  别名_has_next 
	 * 条件判断 大于gt,小于lt
	 * 日期格式化 date?string('yyyy-MM-dd')
	 */
	@Test
	public void testFreemark() {
		String template = "你好<#list nameList as name>${name}<#if name_has_next>、</#if></#list>,<#if age gt 60>年级大</#if>今天是${date?string('yyyy-MM-dd')}"; 
		List<String> nameList=new ArrayList<String>();
		nameList.add("张三");
		nameList.add("李四");
		Map m = new HashMap();
		
		m.put("nameList",nameList);
		m.put("age", 59);
		m.put("date", new Date());
		System.out.println(freemarkerProcess(m, template)); //"你好管理员,今天是2013-09-11"
	}
	
	public static String freemarkerProcess(Map input, String templateStr) {
		StringTemplateLoader stringLoader = new StringTemplateLoader();
		String template = "content";
		stringLoader.putTemplate(template, templateStr);
		Configuration cfg = new Configuration();
		cfg.setTemplateLoader(stringLoader);
		try {
			Template templateCon = cfg.getTemplate(template);
			StringWriter writer = new StringWriter();
			templateCon.process(input, writer);
			return writer.toString();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		}
		return null;
	}
	
	
	
	@Test
	public void testJsonPase() {
		JSONArray jo=JSONArray.parseArray("[{\"daily_average\": \"500\",\"in_amount\": \"40000\",\"in_count\": \"35\",\"out_amount\": \"4\",\"out_count\": \"35\",\"money_source\": [{	\"ranking\": \"1\",	\"name\": \"同名户\",	\"amount\": \"585281\"}, {	\"ranking\": \"2\",	\"name\": \"XXXX\",	\"amount\": \"58000\"}],\"money_target\": [{	\"ranking\": \"1\",	\"name\": \"同名户\",	\"amount\": \"58354523\"}, {	\"ranking\": \"2\",	\"name\": \"XXXX\",	\"amount\": \"580245800\"}],\"money_target_area\": [{	\"ranking\": \"1\",	\"area\": \"成都市\",	\"amount\": \"582389\"}, {	\"ranking\": \"2\",	\"target_area\": \"绵阳市\",	\"amount\": \"580698\"}],\"trade_out_remark\": [{	\"ranking\": \"1\",	\"remark\": \"还贷\",	\"amount\": \"4500.36\"}, {	\"ranking\": \"2\",	\"remark\": \"工资\",	\"amount\": \"3500\"}],\"ip_address\": [{	\"ranking\": \"1\",	\"ip\": \"10.10.10.1\",	\"count\": \"32\"}, {	\"ranking\": \"2\",	\"ip\": \"10.10.10.2\",	\"count\": \"40\"}],\"account_way\": [{	\"ranking\": \"1\",	\"way\": \"现金\",	\"amount\": \"5000\",	\"total_amount\": \"12000\"}, {	\"ranking\": \"2\",	\"ip\": \"手机银行\",	\"amount\": \"7000\",	\"total_amount\": \"12000\"}]}]");
	
		Object money_source=((JSONObject)jo.get(0)).get("money_source");
		
		if(money_source instanceof JSONArray) {
			JSONArray ja=(JSONArray)money_source;
			JSONObject jo1=(JSONObject)ja.get(0);
			System.out.println(jo1.getString("name"));
		}
	}
	
	
	
	
	@Test
	public void testSplit() {
		String javaParameter="java.lang.String|_|java.lang.Integer";
		String[] paraEntityArr=javaParameter.split("\\|_\\|");
		for (String string : paraEntityArr) {
			System.out.println(string);
		}
	}
	
	
	@Test
	public void testZhuanyiDian() {
		String fieldName="money_source.name";
		String[] jsonKeys=fieldName.split("\\.");
		for (String string : jsonKeys) {
			System.out.println(string);
		}
	}
	
	
	
	
}