String转成Map 求解释

String str="{key3=value3, key2={key3=value3, key2=value2, key1=value1},key1=value1}"
转map型求高手NB的算法,str里有
不知道是不是不我引用的jar包不对
Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher

    首先确认字符串是否是json格式的,如果是json格式,那你可以使用Gson.jar或json-lib-xx-jdk.jar两个包来自动解析解析。

    使用Gson更简单些,只需要导入一个包就可以,但是他如果使用Object解析到int型的话或自动转成double型,需要定义一个准确的类来解析,不能直接使用Object。

    示例:

    Gson gson = new Gson()。

    Map<String, Object> map = new HashMap<String, Object>()。

    map = gson.fromJson(str, map.getClass())。

    使用json-lib包的话需要导入更多的包,需要额外导入commons-lang.jar、ezmorph-1.0.4.jar、commons-logging-1.1.1.jar、commons-collections.jar、commons-beanutils.jar这5个包。

    解析示例如下:

    JSONObject jb = JSONObject.fromObject(str)。

    Map<String, Object> map = (Map<String, Object>)jb。

    如果你的字符串不是json格式,那你就需要自己使用split分割字符串,例如:

    String str = "color:red|font:yahei|width:800|height:300"。

    String[] strs = str.split("\\|")。

    Map<String, String> m = new HashMap<String, String>()。

    for(String s:strs){String[] ms = s.split(":");m.put(ms[0], ms[1])}。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-28
1.将str转换成json 再强转成map就行了
JSONObject jasonObject = JSONObject.fromObject(str);
Map map = (Map)jasonObject;本回答被网友采纳
第2个回答  2012-07-11
你少一个jar包ezmorph.jar
第3个回答  2012-06-28
public String[] split(String regex, int limit)根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。 limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 例如,字符串 "boo:and:foo" 使用这些参数可生成以下结果: RegexLimit结果:2{ "boo", "and:foo" }:5{ "boo", "and", "foo" }:-2{ "boo", "and", "foo" }o5{ "b", "", ":and:f", "", "" }o-2{ "b", "", ":and:f", "", "" }o0{ "b", "", ":and:f" }调用此方法的 str.split(regex, n) 形式与以下表达式产生的结果完全相同: Pattern.compile(regex).split(str, n)参数:regex - 定界正则表达式 limit - 结果阈值,如上所述 返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 抛出:PatternSyntaxException - 如果正则表达式的语法无效 从以下版本开始:1.4 另请参见:Patternsplitpublic String[] split(String regex)根据给定正则表达式的匹配拆分此字符串。 该方法的作用就像是使用给定的表达式和限制参数 0 来调用两参数 split 方法。因此,所得数组中不包括结尾空字符串。 例如,字符串 "boo:and:foo" 使用这些表达式可生成以下结果: Regex结果:{ "boo", "and", "foo" }o{ "b", "", ":and:f" }参数:regex - 定界正则表达式 返回:字符串数组,它是根据给定正则表达式的匹配拆分此字符串确定的 抛出:PatternSyntaxException - 如果正则表达式的语法无效 从以下版本开始:1.4 另请参见:Pattern
第4个回答  2012-06-28
看样子,转成json先,再转容易处理一些
相似回答