我正在嘗試在Scala 中決議HTTPS請求的結果。
該HTTPS回應是一個字串如下:
{
"rows":
[
{
"log_forwarding_ip":"",
"device_name":"AD1",
"id":"51",
"mgmt_ip_addr":"192.168.25.150",
"log_forwarding":"1",
"isActive":"0"
},
{
"log_forwarding_ip":"192.168.1.1",
"device_name":"WIN-SRV2019",
"id":"50",
"mgmt_ip_addr":"192.168.25.151",
"log_forwarding":"1",
"isActive":"1"
},
{
"log_forwarding_ip":"129.168.1.2",
"device_name":"PA",
"id":"3",
"mgmt_ip_addr":"192.168.1.161",
"log_forwarding":"1",
"isActive":"1"
}
],
"status":1
}
我必須創建一個串列,id其中isActive和log_forwarding都等于1。
到目前為止,我所做的是:
object syncTables {
def main(args: Array[String]): Unit = {
case class deviceInfo(log_forwarding_ip: String, device_name: String, id: String,
mgmt_ip_addr: String, log_forwarding: String, isActive: String)
try {
val r = requests.get("https://192.168.1.253/api/device/deviceinfo.php", verifySslCerts = false)
if (r.statusCode == 200) {
val x = r.text
println(x)
} else {
println("Error in API call: " r.statusCode)
}
}
}
}
現在我真的很困惑下一步要做什么才能達到我的結果。
我對JSON完全陌生,這就是為什么我不知道應該使用哪個JSON庫。
我嘗試使用Play Framework,但對我來說似乎很復雜。
是否Scala提供類似Python的json模塊,其中該任務可以通過使用可以輕松完成dictionaries和lists。
我正在使用Scala 2.11.12和com.lihaoyi.requests。
任何形式的幫助將不勝感激。
提前致謝。
uj5u.com熱心網友回復:
使用json4s決議 JSON 字串。讓我們呼叫你的 JSON 輸入字串json,然后你可以做這樣的事情
import org.json4s._
import org.json4s.jackson.JsonMethods._
case class DeviceInfo(log_forwarding_ip: String, device_name: String, id: String,
mgmt_ip_addr: String, log_forwarding: String, isActive: String)
implicit val formats: Formats = DefaultFormats // Brings in default date formats etc.
val parsedJson = parse(json)
val deviceInfos = parsedJson match {
case JObject(head :: _) =>
head._2
.extract[List[DeviceInfo]]
.filter(_.isActive == 1 && _.log_forwarding == 1)
}
這將輸出
val res0: List[DeviceInfo] = List(DeviceInfo("192.168.1.1","WIN-SRV2019","50","192.168.25.151","1","1"),DeviceInfo("129.168.1.2","PA","3","192.168.1.161","1","1"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/331460.html
