String转成Map 求解释

Stringstr="{key3=value3,key2={key3=value3,key2=value2,key1=value1},key1=value1}"转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
展开
 我来答
百度网友e1cb3d3
2018-04-18 · TA获得超过3473个赞
知道小有建树答主
回答量:50
采纳率:81%
帮助的人:9940
展开全部
  1. 首先确认字符串是否是json格式的,如果是json格式,那你可以使用Gson.jar或json-lib-xx-jdk.jar两个包来自动解析解析。

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

  3. 示例:

    Gson gson = new Gson()。

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

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

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

  5. 解析示例如下:

    JSONObject jb = JSONObject.fromObject(str)。

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

  6. 如果你的字符串不是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])}。

du375617177
2012-06-28 · TA获得超过269个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:193万
展开全部
1.将str转换成json 再强转成map就行了
JSONObject jasonObject = JSONObject.fromObject(str);
Map map = (Map)jasonObject;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
m54600
2012-07-11 · 超过15用户采纳过TA的回答
知道答主
回答量:35
采纳率:0%
帮助的人:48.6万
展开全部
你少一个jar包ezmorph.jar
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
115327884
2012-06-28 · 超过35用户采纳过TA的回答
知道答主
回答量:194
采纳率:0%
帮助的人:106万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bd9006
2012-06-28 · TA获得超过2.5万个赞
知道大有可为答主
回答量:4.8万
采纳率:63%
帮助的人:1.7亿
展开全部
看样子,转成json先,再转容易处理一些
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式