【问题标题】:Convert a Map value to String将 Map 值转换为字符串
【发布时间】:2020-06-16 20:21:23
【问题描述】:

我正在尝试将地图值转换为String。 我尝试了toString() 方法,但它仍然返回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=

【问题讨论】:

  • 能否打印parsed.get('x-message-id').getClass()的结果
  • 可能x-message-id 值是一个数组,结果是[]
  • @KunLun 数组不会覆盖 toString 方法,因此该方法将返回与 Object 相似的结果,即 ArrayType@hexHash 而不是 [value0, value1, ..]。它可能是一些像 List 或 Set 这样的 Collection。
  • 我说的是收藏。但感谢您纠正我。
  • response 变量的类型是什么?是HttpURLConnection吗?如果是,那么它的.getHeaderFields() 应该返回Map<String, List<String>> 并且应该是parsed 变量的类型(参见:What is a raw type and why shouldn't we use it?)。这将允许您使用parsed.get('x-message-id').get(0);

标签: java groovy hashmap httpresponse katalon-studio


【解决方案1】:

根据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

【讨论】:

  • 差不多,但是你的代码不会在parsed.get('x-message-id')上使用.get(0);方法。
  • 您部分正确。但是x-message-id 可以是任何类型(甚至是简单的字符串)。问题的创建者没有告诉我们x-message-id 的类型。乍一看似乎是收藏。 Set 是一个 Collection 没有 get 方法,因为不使用索引。
  • 为什么要减一票?这不是正确的解决方案吗?你很刻薄。 >:{
  • @Pshemo 哪里看到编译问题?
  • 嘿@HakanDilek messageId 是一个base64编码的字符串。
【解决方案2】:

ResponseObject#getHeaderFields 将 MapString 键返回到 ListString 对象作为值。您只需要为键 x-message-id 获取 String 对象中的 List,并且由于您希望它返回单个结果,因此请查找任何结果。

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);

【讨论】:

    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 1970-01-01
    • 2017-09-23
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多