GroovyJsonXmlSwing 生成器 ( Json 生成器 JsonBuilder | Xml 生成器 MarkupBuilder | Swing 生成器 SwingBuilder)

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GroovyJsonXmlSwing 生成器 ( Json 生成器 JsonBuilder | Xml 生成器 MarkupBuilder | Swing 生成器 SwingBuilder)相关的知识,希望对你有一定的参考价值。

文章目录





一、Json 生成器 JsonBuilder



JsonBuilder 原型如下 , 该类继承自 GroovyObjectSupport 类 , 其核心是 invokeMethod , 利用元编程实现 Json 生成器的作用 , 帮助生成 Json 字符串 ;

public class JsonBuilder extends GroovyObjectSupport implements Writable 
    public Object invokeMethod(String name, Object args) 
        if (args != null && Object[].class.isAssignableFrom(args.getClass())) 
            Object[] arr = (Object[]) args;
            if (arr.length == 0) 
                return setAndGetContent(name, new HashMap<String, Object>());
             else if (arr.length == 1) 
                if (arr[0] instanceof Closure) 
                    return setAndGetContent(name, JsonDelegate.cloneDelegateAndGetContent((Closure) arr[0]));
                 else if (arr[0] instanceof Map) 
                    return setAndGetContent(name, arr[0]);
                
             else if (arr.length == 2)  
                if (arr[0] instanceof Map && arr[1] instanceof Closure) 
                    Map subMap = new LinkedHashMap();
                    subMap.putAll((Map) arr[0]);
                    subMap.putAll(JsonDelegate.cloneDelegateAndGetContent((Closure) arr[1]));

                    return setAndGetContent(name, subMap);
                 else if (arr[0] instanceof Collection && arr[1] instanceof Closure) 
                    List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
                    for (Object it : (Collection) arr[0]) 
                        list.add(JsonDelegate.curryDelegateAndGetContent((Closure) arr[1], it));
                    

                    return setAndGetContent(name, list);
                
            

            throw new JsonException("Expected no arguments, a single map, a single closure, or a map and closure as arguments.");
         else 
            return setAndGetContent(name, new HashMap<String, Object>());
        
    





二、Xml 生成器 MarkupBuilder



MarkupBuilder 继承了 BuilderSupport 类 , 其原型如下 , 其中封装了一系列的方法 , 帮助生成 Xml 文件 ;

public class MarkupBuilder extends BuilderSupport 






三、Swing 生成器 SwingBuilder



Swing 生成器 SwingBuilder , 继承 FactoryBuilderSupport 类 ;

public class SwingBuilder extends FactoryBuilderSupport 

以上是关于GroovyJsonXmlSwing 生成器 ( Json 生成器 JsonBuilder | Xml 生成器 MarkupBuilder | Swing 生成器 SwingBuilder)的主要内容,如果未能解决你的问题,请参考以下文章

python 生成器:生成器基础生成器表达式

python 生成器:生成器基础生成器表达式

生成器和生成器表达式

Python-生成器

生成器 生成器函数

python列表生成器与生成器