将 Map 值转换为 String

Convert a Map value to String

我正在尝试将地图值转换为 String。 我尝试了 toString() 方法,但它仍然是 returns 一个 Object 而不是 String

response = WS.sendRequest(findTestObject('api/test/TD-4_01_01-Valid'))

Map parsed = response.getHeaderFields()

String messageId = parsed.get('x-message-id').toString();

println messageId

实际输出:

[C5yZC5hcy5sb2NhbC0xMjgyNi05MzE1LTE=] 

预期输出:

C5yZC5hcy5sb2NhbC0xMjgyNi05MzE1LTE=

根据 APIMap 是一个 Map<String, List<String>> 映射。这就是为什么你用方括号 [] 包装的原因。

如果你想访问这个列表中的第一个元素,你应该调用parsed.get('x-message-id').get(0)来访问索引为0的元素。

这是完整的解决方案:

response = WS.sendRequest(findTestObject('api/test/TD-4_01_01-Valid'))
Map parsed = response.getHeaderFields()
String messageId = parsed.get('x-message-id').get(0);
println messageId

ResponseObject#getHeaderFields return将 MapString 个键指向 ListString 个对象作为值。您只需要为键 x-message-id 获取 String 个对象的 List,因为您希望它 return 一个结果,所以找到任何一个。

ResponseObject response = WS.sendRequest(findTestObject('api/test/TD-4_01_01-Valid'));

Map<String, List<String>> parsed = response.getHeaderFields();

List<String> messageIdList = parsed.get("x-message-id");

String messageId = messageIdList.stream().findAny().orElseThrow(IllegalStateException::new);