是这样的格式   String rec = "[{id =shm1 ,columnTitle =姓名 },{ id =shm1 ,columnTitle =姓名}]"   有没得办法把字符串搞成 List<Map<String,String>> 
请问大家有没办法.

解决方案 »

  1.   

    这是个 json字符串,你可以用json包里的工具,也可以自己写个方法
      

  2.   

     用json啊。 json里面有工具包的。 很简单 去网上搜下
      

  3.   

    手动给你解析的!String rec = "[{id =shm1 ,columnTitle =姓名 },{ id =shm1 ,columnTitle =姓名}]" ;
    List<Map<String,String>>  list=new ArrayList<Map<String,String>>();
    String[] array=rec.split("(?<=\\}),(?=\\{)");
    for(String str:array){
    Map<String,String> map=new HashMap<String,String>();
    Pattern p=Pattern.compile("(\\w+)\\s*\\=\\s*([\\w\\u4e00-\\u9fa5]+)");
    Matcher m=p.matcher(str);
    while(m.find()){
    map.put(m.group(1),m.group(2));
    }
        System.out.println(map);
    list.add(map);
    }
    System.out.println(list);
    }
      

  4.   

    找个json包就ok了,一句话的事情。
      

  5.   

    json的JSONObject(String)当解析到"}"就return了。
     public JSONObject(JSONTokener x) throws JSONException {
            this();
            char c;
            String key;        if (x.nextClean() != '{') {
                throw x.syntaxError("A JSONObject text must begin with '{'");
            }
            for (;;) {
                c = x.nextClean();
                switch (c) {
                case 0:
                    throw x.syntaxError("A JSONObject text must end with '}'");
                case '}':
                    return;
                default:
                    x.back();
                    key = x.nextValue().toString();
                }
    自己写的解析
    public static void parse() {
    String rec = "[{id =shm1 ,columnTitle =姓名 },{ id =shm2 ,columnTitle =姓名2}]";
    List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    boolean z = false;
    boolean iskeyEnd = false;
    StringBuffer key = new StringBuffer();
    StringBuffer value = new StringBuffer();
    HashMap<String, String>map = null;

    int length = rec.length();
    for(int i=0;i<length;i++) {
    String t = rec.substring(i,i+1);
    if("{".equals(t)) {
    map = new HashMap<String,String>();
    z = true;
    continue;
    }else if("}".equals(t)) {
    if(key.length()>0 || value.length()>0) {
    map.put(key.toString().trim(), value.toString().trim());
    }
    if(map.size()>0) {
    list.add(map);
    }

    map = new HashMap<String,String>();
    key = new StringBuffer();
    value = new StringBuffer();
    z = false;
    iskeyEnd = false;
    }

    if(z) {
    if(",".equals(t)) {
    map.put(key.toString().trim(), value.toString().trim());
    key = new StringBuffer();
    value = new StringBuffer();
    iskeyEnd = false;
    }else {
    if(!"=".equals(t)) {
    if(!iskeyEnd) {
    key.append(t);
    }else{
    value.append(t);
    }
    }else {
    iskeyEnd = true;
    }
    }
    }
    }

    for (Iterator iterator = list.iterator(); iterator.hasNext();) {
    HashMap m = (HashMap) iterator.next();
    Set k = m.keySet();
    for (Iterator iterator2 = k.iterator(); iterator2.hasNext();) {
    String mk = (String) iterator2.next();
    System.out.println(mk + ":" + m.get(mk));
    }

    }
    }