String转成Map 求解释 String如何转成Map?

String\u7c7b\u578b\u8f6c\u5316\u4e3amap\u7c7b\u578b\u600e\u4e48\u8f6c\u5316\uff1f

String hth="20170712";
String khmc="\u4e1c\u5357\u7535\u68af";
String xmmc="\u4e1c\u5357\u5c1a\u5347";
Map map = new HashMap();
map.put("hth", hth);
map.put("khmc", khmc);
map.put("xmmc", xmmc);

\u9996\u5148\u786e\u8ba4\u5b57\u7b26\u4e32\u662f\u5426\u662fjson\u683c\u5f0f\u7684\uff0c\u5982\u679c\u662fjson\u683c\u5f0f\uff0c\u90a3\u4f60\u53ef\u4ee5\u4f7f\u7528Gson.jar\u6216json-lib-xx-jdk.jar\u4e24\u4e2a\u5305\u6765\u81ea\u52a8\u89e3\u6790\u89e3\u6790\u3002



\u4f7f\u7528Gson\u66f4\u7b80\u5355\u4e9b\uff0c\u53ea\u9700\u8981\u5bfc\u5165\u4e00\u4e2a\u5305\u5c31\u53ef\u4ee5\uff0c\u4f46\u662f\u4ed6\u5982\u679c\u4f7f\u7528Object\u89e3\u6790\u5230int\u578b\u7684\u8bdd\u6216\u81ea\u52a8\u8f6c\u6210double\u578b\uff0c\u9700\u8981\u5b9a\u4e49\u4e00\u4e2a\u51c6\u786e\u7684\u7c7b\u6765\u89e3\u6790\uff0c\u4e0d\u80fd\u76f4\u63a5\u4f7f\u7528Object\u3002


\u793a\u4f8b\uff1a
Gson gson = new Gson()\u3002
Map map = new HashMap()\u3002
map = gson.fromJson(str, map.getClass())\u3002

\u4f7f\u7528json-lib\u5305\u7684\u8bdd\u9700\u8981\u5bfc\u5165\u66f4\u591a\u7684\u5305\uff0c\u9700\u8981\u989d\u5916\u5bfc\u5165commons-lang.jar\u3001ezmorph-1.0.4.jar\u3001commons-logging-1.1.1.jar\u3001commons-collections.jar\u3001commons-beanutils.jar\u8fd95\u4e2a\u5305\u3002

\u89e3\u6790\u793a\u4f8b\u5982\u4e0b:
JSONObject jb = JSONObject.fromObject(str)\u3002
Map map = (Map)jb\u3002

\u5982\u679c\u4f60\u7684\u5b57\u7b26\u4e32\u4e0d\u662fjson\u683c\u5f0f\uff0c\u90a3\u4f60\u5c31\u9700\u8981\u81ea\u5df1\u4f7f\u7528split\u5206\u5272\u5b57\u7b26\u4e32\uff0c\u4f8b\u5982:
String str = "color:red|font:yahei|width:800|height:300"\u3002
String[] strs = str.split("\\|")\u3002
Map m = new HashMap()\u3002
for(String s:strs){String[] ms = s.split(":");m.put(ms[0], ms[1])}\u3002

  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])}。



1.将str转换成json 再强转成map就行了
JSONObject jasonObject = JSONObject.fromObject(str);
Map map = (Map)jasonObject;

你少一个jar包ezmorph.jar

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

看样子,转成json先,再转容易处理一些

扩展阅读:java将string转成map ... java 中 string 转为 map ... string manager failed ... javastring转map对象 ... sysmain占用磁盘100% ... string转map中还有map ... string split 方法详解 ... java string split ... string转map集合 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网