#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 ] ]