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

2022-09-01 11:20:26

如何将 a 转换为 ?StringHashMap

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

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

其中键为 和,值为 、 、 。first_namelast_namegendernareshkumarmale

注意:键可以是任何东西,如 .city = hyderabad

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


答案 1

这是一个解决方案。如果要使其更通用,可以使用该库。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, "{", "}");

如果你正在使用哪个包含在包中。StringUtilsapache.commons.lang


答案 2

您可以在单行中执行此操作,对于任何对象类型,而不仅仅是 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)

这种方法有2个优点:

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