zoukankan      html  css  js  c++  java
  • jackson 解析结合类(需要传入Class, 和 Class.Class, 回调方法是List<Class>)

    import java.util.HashMap;
    import java.util.List;
    
    import org.codehaus.jackson.map.ObjectMapper;
    import org.codehaus.jackson.map.type.TypeFactory;
    import org.codehaus.jackson.type.JavaType;
    
    import com.leighyu.utils.Constants;
    
    public class AsyncGetProductCategories<T> implements Runnable {
    
        private final Class<T> type;
        public interface OnFinishListener<T> {
            public void onFinish(List<T> t);
        }
        private OnFinishListener<T> onFinishListener;
        public void setFinishListener(OnFinishListener<T> onFinishListener) {
            this.onFinishListener = onFinishListener;
        }
        
        private String url;
        private HashMap<String, String> params;
        public AsyncGetProductCategories(Class<T> type) {
            this.type = type;
            this.url = Constants.URL + "productcategorylist/getalllevelone.html";
            HashMap<String, String> params = new HashMap<String, String>();
            params.put("testkey", "testvalue");
            this.params = params;
        }
        
        @Override
        public void run() {
            try {
                String result = WebUtil.httpPostJson(this.url, this.params);
                
                ObjectMapper mapper = new ObjectMapper();
                JavaType listType = TypeFactory.collectionType(List.class, type);
                List<T> entities = mapper.readValue(result, listType);
                if(onFinishListener != null) {
                    onFinishListener.onFinish(entities);
                }
            } catch(Exception ex) {
                ex.printStackTrace();
            }
        }
    }
            AsyncGetProductCategories<ProductCategoryEntity> agpc = 
                    new AsyncGetProductCategories<ProductCategoryEntity>(ProductCategoryEntity.class);
            agpc.setFinishListener(new OnFinishListener<ProductCategoryEntity>(){
                @Override
                public void onFinish(final List<ProductCategoryEntity> entities) {
                    activity.runOnUiThread(new Runnable() 
                    {
                        @Override
                        public void run() {
                            drawLevelOne(entities);
                            mProgressDialog.dismiss();
                        }
                    });
                }
            });
            
            new Thread(agpc).start();
  • 相关阅读:
    个人第三次作业——原型设计
    《构建之法》团队作业第一次
    vsCode如何将结果输入到调试控制台
    Beta-冲刺第三天
    Beta版本(有更改)
    Beta冲刺-第二天
    Beta冲刺—第一天
    个人作业-测试
    团队项目—系统设计
    团队项目-需求分析
  • 原文地址:https://www.cnblogs.com/webglcn/p/4852363.html
Copyright © 2011-2022 走看看