Как мне получить значение тела результата, а не полное тело результата в scala spark

#scala #apache-spark #apache-spark-sql

#scala #apache-spark #apache-spark-sql

Вопрос:

У меня есть конечная точка api flask, которая при запросе к ней отвечает следующим образом:

 {
    "embeddings": [
        [
            0.09660455584526062,
            0.020427927374839783,
            -0.006049016956239939
        ]
    ]
}
 

У меня есть некоторый код в scala, который запрашивает его и извлекает ответ, но в настоящее время он получает все тело следующим образом:

{«вложения»: [[-0.09660455584526062, 0.020427927374839783, -0.006049016956239939]]}

Я просто хотел бы извлечь тело внутри «emdeddings», например:

     [
        [
            0.09660455584526062,
            0.020427927374839783,
            -0.006049016956239939
        ]
    ]
 

Вопрос в том, как мне это сделать:

Код пока:

   def callFlaskApiEndPoint(url: String): String => String = (requestBody: String) => {
    implicit val formats = DefaultFormats

    val formatted_content = "text" -> requestBody
    val jsonData = compact(render(formatted_content))
    try {
      val result = Http(url)
        .postData(jsonData)
        .header("Content-Type", "application/json")
        .header("Charset", "UTF-8")
        .option(HttpOptions.connTimeout(10000))
        .option(HttpOptions.readTimeout(5000))
        .asString

      result.body
      //tried following but not working so commented out
      //(parse(result.body) \ "embeddings").extract[String]
    } catch {
      case e: Exception => {
        "{}"
      }
    }
  }
 

Ответ №1:

Попробуйте это:

 pretty(render(parse(str) \ "embeddings"))
 

Это дает:

 [ [ -0.09660455584526062, 0.020427927374839783, -0.006049016956239939 ] ]