后台生成一个json规则对象,想用解析字符串的方式来解析成pojo再放到list中,找了一些资料,认为写正则是性价比最好的.
[{"itemName":"No.","printX":"5","printY":"4.9","printW":"6.5","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Polic","value":"20"},{"itemName":"CONTRACT NO","printX":"15.2","printY":"5.3","printW":"15","printH":"0.4","printFont":"宋体","printMode":"0","printEnable":"T","printKey":"Contrac","value":"14"}]
希望大家给些建议,

解决方案 »

  1.   

    关键是怎么拿到值的问题 至于赋值可以用反射来做,也可以一个个的set
      

  2.   


    String josn= "[{\"itemName\":\"No.\",\"printX\":\"5\",\"printY\":\"4.9\",\"printW\":\"6.5\",\"printH\":\"0.4\",\"printFont\":\"宋体\",\"printMode\":\"0\",\"printEnable\":\"T\",\"printKey\":\"Polic\",\"value\":\"20\"},{\"itemName\":\"CONTRACT NO\",\"printX\":\"15.2\",\"printY\":\"5.3\",\"printW\":\"15\",\"printH\":\"0.4\",\"printFont\":\"宋体\",\"printMode\":\"0\",\"printEnable\":\"T\",\"printKey\":\"Contrac\",\"value\":\"14\"}]";
            String[] array=josn.split("(?<=\\}),(?=\\{)");
            List<Map<String,String>> list=new ArrayList<Map<String,String>>();
            for(String str:array){
                Pattern p = Pattern.compile("[\\{,]\"(\\w+)\"");
                Matcher m = p.matcher(str);
                List<String> key=new ArrayList<String>();
                while (m.find()){
                    key.add(m.group(1));            }
                System.out.println(key);
                p=Pattern.compile(":\"([^\"]*)\",?");
                m=p.matcher(str);
                List<String> values=new ArrayList<String>();
                while (m.find()){
                    values.add(m.group(1));
                }
                System.out.println(values);
                if(key.size()==values.size()){
                    Map<String,String> map=new HashMap<String,String>();
                    for(int i=0;i<key.size();i++){
                        map.put(key.get(i), values.get(i));
                    }
                    list.add(map);
                }
            }
            System.out.println(list);
        }
      

  3.   

    google有个包,专门干这个事情
      

  4.   

    谢谢 closewubq   代码可用,但是当我把这些字符串当参数传进方法时候就都是空
    key=[]
    values=[]
    key=[]
    values=[]
    key=[]
    values=[]
    我利用eclipse 传递参数进去
    public static void main(String[] args) {
    dealJson1(args[0]);
    }