java中如何将String转换成Hashmap

新手上路,请多包涵

如何将 String 转换为 HashMap

 String value = "{first_name = naresh, last_name = kumar, gender = male}"

进入

Map<Object, Object> = {
    first_name = naresh,
    last_name = kumar,
    gender = male
}

Where the keys are first_name , last_name and gender and the values are naresh , kumar , male

注意: 密钥可以是任何东西,例如 city = hyderabad

我正在寻找一种通用方法。

原文由 Naresh kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 970
2 个回答

这是一种解决方案。如果你想让它更通用,你可以使用 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
}

例如你可以切换

 value = value.substring(1, value.length()-1);

 value = StringUtils.substringBetween(value, "{", "}");

如果您使用的是 StringUtils 包含在 apache.commons.lang 包中。

原文由 kai 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

(因为我很自由地使用 Gson ,所以我分享一个基于 Gson 的方法)

 Gson gson = new Gson();
Map<Object,Object> attributes = gson.fromJson(gson.toJson(value),Map.class);

它的作用是:

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

这种方法有两个优点:

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

原文由 tryingToLearn 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题