zoukankan      html  css  js  c++  java
  • Json转化与ExtJS树(后台处理)

    一、JSON对格式化数据的操作:

    1.导入依赖包:

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;

    2.Map转化为JSON数组:

    //声明一个Hash对象并添加数据
    Map params =  new HashMap();
    
    params.put("username", username);
    params.put("user_json", user);
    
    //声明JSONArray对象并输入JSON字符串
    JSONArray array = JSONArray.fromObject(params);
    put.println(array.toString());

    3.String 转换为JSON对象

    import org.json.JSONArray;
    import org.json.JSONException;
    import org.json.JSONObject;
    
    //别忘了添加上JSON包哦!
    public class StringToJSON {
        public static void main(String[] args) throws JSONException{
            
            System.out.println("abc");
            //定义JSON字符串
            String jsonStr = "{"id": 2," + 
                    " "title": "json title", " + 
                    ""config": {" +
                        ""width": 34," +
                        ""height": 35," +
                    "}, "data": [" +
                        ""JAVA", "JavaScript", "PHP"" +
                    "]}";
            
            //转换成为JSONObject对象
            JSONObject jsonObj = new JSONObject(jsonStr);
            
            //从JSONObject对象中获取数据
            JavaBean bean = new JavaBean();
            
            //根据属性名称获取int型数据;
            bean.setId(jsonObj.getInt("id"));     
            
            //根据属性名获取String数据;
            bean.setTitle(jsonObj.getString("title")); 
            
            //根据属性名获取JSONObject类
            JSONObject config = jsonObj.getJSONObject("config");
            bean.setWidth(config.getInt("width"));
            bean.setHeight(config.getInt("height"));
            
            //根据属性名获取JSONArray数组
            JSONArray data = jsonObj.getJSONArray("data");
            for(int index = 0, length = data.length(); index < length; index++) {
                //这里在org.json.JSONArray对象中居然没有找到toArray方法,求各位网友给出解决办法啊!
    //            bean.setLanguages(String[]);
            }        
        }
    }
    
    class JavaBean{
        private int id ;
        private String title;
        private int width;
        private int height;
        private String[] languages;
    
            //这里省略了设置器和访问器
    }

    4.JSON转化为String

    public static void main(String[] args) throws JSONException {
            
            //创建JSONObject对象
            JSONObject json = new JSONObject();
            
            //向json中添加数据
            json.put("username", "wanglihong");
            json.put("height", 12.5);
            json.put("age", 24);
            
            //创建JSONArray数组,并将json添加到数组
            JSONArray array = new JSONArray();
            array.put(json);
            
            //转换为字符串
            String jsonStr = array.toString();
            
            System.out.println(jsonStr);
        }

    5.集合转换为JSON

    public static void main(String[] args)throws JSONException{
            //初始化ArrayList集合并添加数据
            List<String> list = new ArrayList<String>();
            list.add("username");
            list.add("age");
            list.add("sex");
            
            //初始化HashMap集合并添加数组
            Map map = new HashMap();
            map.put("bookname", "CSS3实战");
            map.put("price", 69.0);
            
            //初始化JSONArray对象,并添加数据
            JSONArray array = new JSONArray();
            array.put(list);
            array.put(map);
            
            //生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]
        }

    6.数据读写:

    读数据:

    import java.io.FileNotFoundException;
    import java.io.FileReader;
    
    import com.google.gson.JsonArray;
    import com.google.gson.JsonIOException;
    import com.google.gson.JsonObject;
    import com.google.gson.JsonParser;
    import com.google.gson.JsonSyntaxException;
    
    public class Json_read {
    
        public static void main(String[] args) {
            
            try {
                JsonParser parser = new JsonParser();
                JsonObject object = (JsonObject) parser.parse(new FileReader("test.json"));
                System.out.println("cat="+object.get("cat").getAsString());
                System.out.println("pop="+object.get("pop").getAsBoolean());
                
                JsonArray array = object.get("languages").getAsJsonArray();
                for(int i=0;i<array.size();i++){
                    System.out.println("--------");
                    JsonObject subObject = array.get(i).getAsJsonObject();
                    System.out.println("id="+subObject.get("id").getAsInt());
                    System.out.println("name="+subObject.get("name").getAsString());
                    System.out.println("ide="+subObject.get("ide").getAsString());
                    
                }
                
            } catch (JsonIOException e) {
                e.printStackTrace();
            } catch (JsonSyntaxException e) {
                e.printStackTrace();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
        }
    
    }

    写数据:

    import com.google.gson.JsonArray;
    import com.google.gson.JsonObject;
    
    public class Json_Write {
    
        public static void main(String[] args) {
            JsonObject object = new JsonObject();//整体jsonobject容器
            object.addProperty("cat", "it");
            
            JsonArray array = new JsonArray();
            
            JsonObject lan1 = new JsonObject();
            lan1.addProperty("id", 1);
            lan1.addProperty("name", "java");
            lan1.addProperty("ide", "eclipse");
            array.add(lan1);
            
            JsonObject lan2 = new JsonObject();
            lan2.addProperty("id", 2);
            lan2.addProperty("name", "switf");
            lan2.addProperty("ide", "XCode");
            array.add(lan2);
            
            JsonObject lan3 = new JsonObject();
            lan3.addProperty("id", 3);
            lan3.addProperty("name", "c#");
            lan3.addProperty("ide", "visual studio");
            array.add(lan3);
            
            object.add("languages", array);
            
            object.addProperty("pop", true);
            
            System.out.println(object.toString());
            
        }
    
    }

    testJson:

    {
       "cat":"it",
       "languages":[
          {"id":1,"ide":"Eclipse","name":"Java"},
          {"id":2,"ide":"XCode","name":"Swift"},
          {"id":3,"ide":"Visual studio","name":"c#"}
       ],
       "pop":true
    }

    二、将字符串转换为ExtJS树:

    1.符合ExtJS树结果的转义json:

    [{"id":"5","parentId":"1","nodeCode":"ITOB","text":"IT对象","nodeNote":"null","children":[{"id":"488","parentId":"5","nodeCode":"APP","text":"应用资源","nodeNote":"null","leaf":"true"},{"id":"491","parentId":"5","nodeCode":"USER","text":"用户","nodeNote":"null","leaf":"true"},{"id":"490","parentId":"5","nodeCode":"DATA","text":"数据资源","nodeNote":"null","leaf":"true"},{"id":"487","parentId":"5","nodeCode":"HDWE","text":"硬件资源","nodeNote":"null","leaf":"true"},{"id":"489","parentId":"5","nodeCode":"SRV","text":"服务资源","nodeNote":"null","leaf":"true"},{"id":"492","parentId":"5","nodeCode":"ROLE","text":"角色","nodeNote":"null","leaf":"true"}]}]

    2.TreeNode实体:

    
    
    import java.util.*;
    
    public class TreeNode
    {
        private String id;
        private String text;
        private String parentId;
        private String iconCls;
        private String cls;
        private String uiProvider;
        private Boolean checkbox;
        private Boolean checked;
        private Boolean leaf;
        private Boolean expanded;
        private List<TreeNode> children;
        private Map<String, String> data;
        
        public TreeNode() {
            this.id = "";
            this.text = "";
            this.parentId = "";
            this.iconCls = "";
            this.cls = "forum";
            this.uiProvider = "";
            this.checkbox = false;
            this.checked = false;
            this.leaf = true;
            this.expanded = false;
            this.children = new ArrayList<TreeNode>();
            this.data = new HashMap<String, String>();
        }
        
        public String getId() {
            return this.id;
        }
        
        public void setId(final String id) {
            this.id = id;
        }
        
        public String getText() {
            return this.text;
        }
        
        public void setText(final String text) {
            this.text = text;
        }
        
        public String getParentId() {
            return this.parentId;
        }
        
        public void setParentId(final String parentId) {
            this.parentId = parentId;
        }
        
        public String getIconCls() {
            return this.iconCls;
        }
        
        public void setIconCls(final String iconCls) {
            this.iconCls = iconCls;
        }
        
        public String getCls() {
            return this.cls;
        }
        
        public void setCls(final String cls) {
            this.cls = cls;
        }
        
        public String getUiProvider() {
            return this.uiProvider;
        }
        
        public void setUiProvider(final String uiProvider) {
            this.uiProvider = uiProvider;
        }
        
        public Boolean getCheckbox() {
            return this.checkbox;
        }
        
        public void setCheckbox(final Boolean checkbox) {
            this.checkbox = checkbox;
        }
        
        public Boolean getChecked() {
            return this.checked;
        }
        
        public void setChecked(final Boolean checked) {
            this.checked = checked;
        }
        
        public Boolean getLeaf() {
            return this.leaf;
        }
        
        public void setLeaf(final Boolean leaf) {
            this.leaf = leaf;
        }
        
        public Boolean getExpanded() {
            return this.expanded;
        }
        
        public void setExpanded(final Boolean expanded) {
            this.expanded = expanded;
        }
        
        public List<TreeNode> getChildren() {
            return this.children;
        }
        
        public void setChildren(final List<TreeNode> children) {
            this.children = children;
        }
        
        public Map<String, String> getData() {
            return this.data;
        }
        
        public void setData(final Map<String, String> data) {
            this.data = data;
        }
    }
    

    3.ExtJS格式解析:(参考:https://zyjustin9.iteye.com/blog/2170196

    id:"id"                     //节点ID  
    text:"节点文本"             //节点显示的文本  
    cls:"folder/file"           //节点显示的样式:文件夹或文件  
    pid:"id"                    //父节点的ID  
    leaf:true                   //是否是叶子节点  
    expanded:fasle              //是否展开,默认不展开  
    checked:false               //true则在text前有个选中的复选框,false则text前有个未选中的复选框,默认没有任何框框  
    href:"http://www.123.com"   //节点的链接地址  
    hrefTarget:"mainFrame"      //打开节点链接地址默认为blank,可以设置为iframe名称id,则在iframe中打开  
    qtip:"提示"               //提示信息,不过要有Ext.QuickTips.init();  
    singleClickExpand:true      //用单击文本展开,默认为双击  

    4.代码转化 (可以去参考https://blog.csdn.net/cronousgt/article/details/53502999

             //初始化数据
            List<TreeNode> treeList =new ArrayList<TreeNode>();
    		TreeNode tns =new TreeNode();
    		tns.setId("root");
    		tns.setText("质量检测");
    		tns.setParentId(null);
    		treeList.add(tns);
    		Map<String,String> map =new HashMap<>();
    		Recursion r = new Recursion();
    		JSONObject ob=null;
    		JSONArray a=null;
    		JSONObject cc =null;
    		try {
    			ob =new JSONObject(aa);//将String数据转换为可以操作的json数据
    			a =ob.getJSONArray("profiles");//将子Json数组
    			for(int i=0;i<a.length();i++){//获取json数组中的数据
    				cc =new JSONObject(a.get(i).toString());
    				tns =new TreeNode();
    				tns.setId(cc.getString("key").toString());//id
    				tns.setText(cc.getString("name").toString());//text
    				tns.setParentId(cc.getString("languageName").toString());//parentId,父节点
    				map.put(cc.getString("languageName").toString(), cc.getString("languageName").toString());
    				treeList.add(tns);
    			}
    			for(String v : map.values()){
    				tns =new TreeNode();
    				tns.setId(v);//id
    				tns.setText(v);//text
    				tns.setParentId("root");//parentId,父节点
    				treeList.add(tns);
    			}
    		} catch (JSONException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}

    将List<T>中的数据组装成ExtJS树:

    //利用双重循环形成一棵树。
    	List<TreeNode> rootTree = new ArrayList<TreeNode>();
    	for(TreeNode treeNode : treeList){
    		//判断是否为root跟节点,是就加入rootTree
    		if(treeNode.getParentId()==null){
    			rootTree.add(treeNode);
    		}
    		for(TreeNode t : treeList){
    			if(t.getParentId()!=null&&t.getParentId().equals(treeNode.getId())){
    				if(treeNode.getChildren() == null){
    					List<TreeNode> myChildrens = new ArrayList<TreeNode>();
    					myChildrens.add(t);
    					treeNode.setChildren(myChildrens);
    				}else{
    					treeNode.getChildren().add(t);
    				}
    				treeNode.setLeaf(false);
    				}
    			}
    		}
    		return rootTree;
    	}
  • 相关阅读:
    操作系统的磁盘结构、磁盘管理、磁盘调度算法
    ArrayList源码解析--值得深读
    深入理解static、volatile关键字
    7:高阶张量操作
    6:统计属性
    5:张量的基本运算
    4.1张量的操作(broadcasting维度自动扩张,拼接与拆分)
    4:张量操作
    3:索引与切片
    2:pytorch的基本数据类型以及张量的创建
  • 原文地址:https://www.cnblogs.com/wanchen-chen/p/12934104.html
Copyright © 2011-2022 走看看