package org.nutz.lang.tmpl;

import org.nutz.json.Json;
import org.nutz.json.JsonFormat;
import org.nutz.lang.Strings;

public class TmplJsonEle extends TmplDynamicEle {

    private JsonFormat _fmt;

    public TmplJsonEle(String key, String fmt, String dft_str) {
        super("json", key, fmt, dft_str);

        _fmt = JsonFormat.forLook();
        if (null != fmt) {
            _fmt.setCompact(fmt.indexOf('c') >= 0);
            _fmt.setQuoteName(fmt.indexOf('q') >= 0);
            _fmt.setIgnoreNull(fmt.indexOf('n') < 0);
        }
    }

    @Override
    protected String _val(Object val) {
        if (null == val)
            return "null";

        if (val instanceof CharSequence) {
            if ("-obj-".equals(val))
                return "{}";
            String s = Strings.trim(val.toString());
            if (Strings.isQuoteBy(s, '[', ']'))
                return s;
            // zozoh 字符串还是应该转 JSON 吧
            // return val.toString();
        }

        return Json.toJson(val, _fmt);
    }

}

@@ -536,16 +536,17 @@
       %7D%0A
+%0A
     %7D%0A%0A 
@@ -813,16 +813,42 @@
 ing());%0A
+            // %E7%9B%B4%E6%8E%A5%E5%B0%B1%E6%98%AF%E6%95%B0%E7%BB%84%E6%88%96%E8%80%85%E5%AF%B9%E8%B1%A1%0A
         
@@ -885,16 +885,50 @@
 %5B', '%5D')
+ %7C%7C Strings.isQuoteBy(s, '%7B', '%7D')
 )%0A      

修改 Tmpl.json 的 bug