Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为列表<;地图<;字符串,字符串>&燃气轮机&燃气轮机;测试_Java_Spring Boot_Junit_Mockito - Fatal编程技术网

Java 将字符串转换为列表<;地图<;字符串,字符串>&燃气轮机&燃气轮机;测试

Java 将字符串转换为列表<;地图<;字符串,字符串>&燃气轮机&燃气轮机;测试,java,spring-boot,junit,mockito,Java,Spring Boot,Junit,Mockito,我需要将字符串转换为列表>,以通过JUnit测试。我有这个: String userAttributes = "[{name=test, cp=458999, lastname=test2}]"; 我想要的是在测试(Mockito)中使用以下值更改对服务器的调用: Mockito.when(template.search(Mockito.anyString, new AttributesMapper()).thenReturn(attributes); 我需要列表>来执行此操作: user.

我需要将
字符串
转换为
列表>
,以通过JUnit测试。我有这个:

String userAttributes = "[{name=test, cp=458999, lastname=test2}]";
我想要的是在测试(Mockito)中使用以下值更改对服务器的调用:

Mockito.when(template.search(Mockito.anyString, new AttributesMapper()).thenReturn(attributes);
我需要
列表>
来执行此操作:

user.setUserName(attributes.get("name"));

尝试正则表达式或按特殊字符拆分。首先删除开头和结尾的括号。之后,您可以按
=
将其拆分,以收集要映射的字符串

stringuserattributes=“[{name=test,cp=458999,lastname=test2}]”;
List strings=Arrays.asList(userAttributes
.replace(“[{,”).replace(“}]”,“”)
.拆分(“,”);
Map collect=strings.stream()
.map(s->s.split(“=”)
.collect(收集器.toMap(s->s[0],s->s[1]);
System.out.println(collect.get(“name”));
具有
模式的其他方法

Map collect=Pattern.compile(“,”)
.splitAsStream(用户属性)
.replace(“[{,”).replace(“}]”,“”)
.map(s->s.split(“=”)
.collect(收集器.toMap(s->s[0],s->s[1]);
或者如果您真的想使用
列表>
。但是在那之后你就不能这样做了
user.setUserName(attributes.get(“name”))

List maps=strings.stream()
.map(s->s.split(“=”)
.map(s->map.of(s[0],s[1]))
.collect(Collectors.toList());
系统输出打印LN(地图);
stringuserattributes=“[{name=test,cp=458999,lastname=test2}]”;
StringTokenizer StringTokenizer=新的StringTokenizer(userAttributes,“,”);
列表=新的ArrayList();
while(stringTokenizer.hasMoreElements()){
StringTokenizer stringTokenizer2=新的StringTokenizer((字符串)StringTokenizer.nextElement(),“=”);
while(stringTokenizer2.hasMoreElements()){
Map Map=newhashmap();
put(((字符串)stringTokenizer2.nextElement()),((字符串)stringTokenizer2.nextElement());
列表。添加(地图);
}
}
System.err.println(list.toString());

的可能重复项提供答案,而不是编辑您的问题以添加解决方案部分。您是否可以说,如果提供的答案解决了您的问题,或者说他们出了什么问题?回答有助于将来精确回答。如果使用StringTokenizer,则不需要删除“[{”和“}]”。运行以下代码:
[{[{name=test},{cp=458999},{lastname=test2}]}]
list.stream().forEach(m->System.out.println(m.entrySet())您获得键“{name”、“cp”、“lastname”
    String userAttributes = "[{name=test, cp=458999, lastname=test2}]";
    StringTokenizer stringTokenizer = new StringTokenizer(userAttributes,",");
    List<Map<String,String>> list = new ArrayList<>();
    while(stringTokenizer.hasMoreElements()){
        StringTokenizer stringTokenizer2 = new StringTokenizer((String)stringTokenizer.nextElement(),"=");
        while(stringTokenizer2.hasMoreElements()){
            Map<String, String> map = new HashMap<>();
            map.put( ((String)stringTokenizer2.nextElement()),((String)stringTokenizer2.nextElement()) );
            list.add(map);
        }
    }

    System.err.println(list.toString());