初始的数据metrics为Map[String, Any],Any里面的数据类型为WrappedArray(map(),map())类型。 如何取出类似non_unique = 1的值?

初始的数据metrics为Map[String, Any],经过分析后发现Any里面的数据类型为WrappedArray(map(),map())类型。
我想从以下数据获取出non_unique = 1这样的值,需要如何操作?
数据例子如下:

Map(applicationId -> local-1673262860096, 
  job_name -> dist_batch, 
  tmst -> 1673262884352, 
  measure_name -> duplication_measure, 
  metrics -> WrappedArray(
    Map(metric_name -> total, metric_value -> 50), 
    Map(metric_name -> duplicate, metric_value -> 1), 
    Map(metric_name -> unique, metric_value -> 48), 
    Map(metric_name -> non_unique, metric_value -> 1), 
    Map(metric_name -> distinct, metric_value -> 49)
  ), 
  measure_type -> Duplication, 
data_source -> source)


可以使用如下的代码来获取 non_unique=1 的值:

val metrics = data("metrics").asInstanceOf[WrappedArray[Map[String, Any]]]
val nonUniqueValue = metrics.find(_("metric_name") == "non_unique").map(_("metric_value"))

在上面的代码中,我们首先获取了 metrics 字段对应的值,然后将它转换为 WrappedArray[Map[String, Any]] 类型。接着,我们使用 find 方法查找 metric_name 为 "non_unique" 的元素。如果找到,则返回 Some(map),否则返回 None。最后,我们使用 map 方法从 Some(map) 中取出 map,然后返回 metric_value 字段的值。

如果你想要直接获取 non_unique=1 的值,可以使用如下的代码:

val nonUniqueValue = metrics.find(_("metric_name") == "non_unique").flatMap(_.get("metric_value"))

这样,如果找到了 metric_name 为 "non_unique" 的元素,就直接返回 metric_value 字段的值;否则返回 None。