如何在java中将String转换为Hashmap

Nar*_*mar 20 java collections hashmap

如何将字符串转换为哈希映射

String value = "{first_name = naresh, last_name = kumar, gender = male}"
Run Code Online (Sandbox Code Playgroud)

Map<Object, Object> = {
    first_name = naresh,
    last_name = kumar,
    gender = male
}
Run Code Online (Sandbox Code Playgroud)

关键是String和价值观HashMap

注意:键可以是任何类似的东西 first_name

任何通用的方法将不胜感激.

kai*_*kai 43

这是一个解决方案.如果你想让它更通用,你可以使用我们的StringUtils库.

String value = "{first_name = naresh,last_name = kumar,gender = male}";
value = value.substring(1, value.length()-1);           //remove curly brackets
String[] keyValuePairs = value.split(",");              //split the string to creat key-value pairs
Map<String,String> map = new HashMap<>();               

for(String pair : keyValuePairs)                        //iterate over the pairs
{
    String[] entry = pair.split("=");                   //split the pairs to get key and value 
    map.put(entry[0].trim(), entry[1].trim());          //add them to the hashmap and trim whitespaces
}
Run Code Online (Sandbox Code Playgroud)

例如,您可以切换

 value = value.substring(1, value.length()-1);
Run Code Online (Sandbox Code Playgroud)

 value = StringUtils.substringBetween(value, "{", "}");
Run Code Online (Sandbox Code Playgroud)

如果您正在使用StringUtils包含在apache.commons.lang包中.

  • 如果键或值中有任何逗号,它就会中断。也应该考虑到这一点。 (2认同)

Ruc*_*era 7

String value = "{first_name = naresh,last_name = kumar,gender = male}"
Run Code Online (Sandbox Code Playgroud)

开始吧

  1. 删除{}来自String>> FIRST_NAME =纳雷什,姓氏=库马尔,性别=男
  2. 拆分Stringfrom ,>> array of 3 element
  3. 现在你有一个arraywith 3元素
  4. 迭代array并拆分每个元素=
  5. 创建一个Map<String,String>把每个部分分开的=.第一部分Key和第二部分Value

  • +1表示方式,但不是勺子喂代码 (4认同)
  • 用逗号分割是不对的,如果map = {num ="12,12,2016",name = blabla} (2认同)

try*_*arn 5

您可以在单行中完成,适用于任何对象类型,而不仅仅是 Map。

(因为我非常自由地使用Gson,所以我分享了一种基于 Gson 的方法)

Gson gson = new Gson();    
Map<Object,Object> attributes = gson.fromJson(gson.toJson(value),Map.class);
Run Code Online (Sandbox Code Playgroud)

它的作用是:

  1. gson.toJson(value) 将您的对象序列化为其等效的 Json 表示形式。
  2. gson.fromJson将 Json 字符串转换为指定的对象。(在这个例子中 - Map

这种方法有两个优点:

  1. 将对象而不是字符串传递给toJson方法的灵活性 。
  2. 您可以使用这一行来转换为任何对象,甚至是您自己声明的对象。