Как опубликовать данные json в scalaj?

Я использую scalaj для отправки запроса на отправку Http

Как передать широту, длину и радиус в качестве аргументов в поле postData

val result = Http("http:xxxx/xxx/xxxxx").postData("""{"latitude":"39.6270025","longitude":"-90.1994042","radius":"0"}""").asString

Почему строка передается в """json""" таким образом?

Основываясь на документации, похоже, что функция postData принимает в качестве аргумента только массив байтов и строку.

1 ответ

Решение

Так что это сразу два вопроса. Начнем со второго.

Почему строка передается в """json""" таким образом?

Scala допускает специальный синтаксис для многострочных строковых литералов (или строк, содержащих символы новой строки, кавычки и т. Д.). Так ты можешь сделать

val s = """Welcome home!
           How are you today?"""

Теперь вернемся к основному вопросу

Как передать широту, длину и радиус в качестве аргументов в поле postData?

Полагаю, вы попали в такую ​​ситуацию:

val lat = "39.6270025"
val long = "-90.1994042"

И вы хотите передать это в postData функция, смешанная с некоторыми другими, возможно, фиксированными строками.

Еще одна особенность, которую предоставляет Scala, - это так называемая string interpolation. Простой пример

val name = "Mark" // output on the REPL would be: name: String = Mark
val greeting = s"Hello $name!" // output on the REPL would be: greeting: String = Hello Mark!

Итак, в вашем случае вы могли бы сделать то же самое

val result = Http("http:xxxx/xxx/xxxxx")
  .postData(s"""{"latitude":$lat,"longitude":$long,"radius":"0"}""")
  .asString
Другие вопросы по тегам