如何将String
转换为HashMap
?
String value = "{first_name = naresh, last_name = kumar, gender = male}"
变成
Map<Object, Object> = {
first_name = naresh,
last_name = kumar,
gender = male
}
其中键为first_name
、last_name
和gender
,值为naresh
、kumar
和male
。
**注意:**密钥可以是city = hyderabad
之类的任何东西。
我正在寻找一种通用的方法。
9条答案
按热度按时间0s7z1bwu1#
这是一个解决方案。如果你想让它更通用,你可以使用
StringUtils
库。例如,您可以切换
到
如果您使用的是
StringUtils
,它包含在apache.commons.lang
包中。sdnqo3pr2#
你可以在一行中完成,对于任何对象类型,而不仅仅是Map。
(由于我非常自由地使用Gson,因此我将分享一种基于Gson的方法)
它的作用是:
gson.toJson(value)
会将你的对象序列化为等价的Json表示。gson.fromJson
将Json字符串转换为指定的对象。(在本例中-Map
)这种方法有两个优点:
1.灵活地将Object而不是String传递给
toJson
方法。1.您可以使用这一行转换为任何对象,甚至是您自己声明的对象。
mi7gmzs63#
我们开始吧
1.从
String
中删除{
和}
〉〉first_name = naresh,last_name = kumar,gender = male1.从
,
〉〉3个元素的数组中拆分String
1.现在,您有一个包含
3
元素的array
1.迭代
array
并将每个元素按=
拆分1.创建一个
Map<String,String>
,将每个部分用=
分隔。第一部分为Key
,第二部分为Value
iibxawm44#
yfjy0ee75#
试试这个:)
示例输入:“a=0,B={a=1},c={ew={qw=2}},0 =a”输出:{0=a,a=0,B={a=1},c={ew={qw=2}}}
xmd2e60i6#
应该使用这种方式转换成Map:
vdgimpew7#
p1iqtdky8#
使用Java流:
Arrays.stream()
将字符串数组转换为流。replaceAll("[{}]", " "):
正则表达式版本来替换两个大括号。split(","):
将字符串拆分为,以获得单独的Map条目。s.split("=", 2):
通过=拆分它们以获得键和值,并确保数组永远不会超过两个元素。collect()
方法从流对象中收集所有对象,并存储在集合的类型中。Collectors.toMap(s -> s[0].trim(), s -> s[1].trim()):
将元素累加到Map中,该Map的键和值是将提供的Map函数应用于输入元素的结果。44u64gxh9#
令人惊讶的是没有人提到使用JSONObject(org.json.JSONObject)
比编写自己的解析器好得多吗?