У меня есть три класса дел, как показано ниже:
case class Result(
result: Seq[Signal],
hop: Int)
case class Signal(
rtt: Double,
from: String)
case class Traceroute(
dst_name: String,
from: String,
prb_id: BigInt,
msm_id: BigInt,
timestamp: BigInt,
result: Seq[Result])
A Traceroute имеет поле result
, которое представляет собой последовательность Результат .Каждый Результат представляет собой последовательность Сигнал .
Я пытаюсь проверить, не является ли поле Result
отрицательным.Моя json-запись выглядит следующим образом:
{"prb_id": 4247, "result": [{"result": [{"rtt": 1.955, "ttl": 255, "from": "89.105.200.57", "size": 28}, {"rtt": 1.7, "ttl": 255, "from": "10.10.0.5", "size": 28}, {"rtt": 1.709, "ttl": 255, "from": "89.105.200.57", "size": 28}], "hop": 1}]}
Для ясности я опускаю некоторые атрибуты в json-записи.Атрибут result - это поле результата в классе case Traceroute.
Я использовал фильтр, чтобы проверить, является ли сигнал rtt в ноте отрицательным, используя фильтр, но я не получил ожидаемого.
val checkrtts = checkError.filter(x => x.result.foreach(p => p.result.foreach(f => checkSignal(f))))
Функция checkSignal выглядит следующим образом:
def checkSignal(signal: Signal): Signal = {
if (signal.rtt > 0) {
return signal
} else {
return null
}
}
Приведен пример двух экземпляров Traceroute:
{"timestamp": 1514768409, "result": [{"result": [{"rtt": 1.955, "ttl": 255, "from": "89.105.200.57", "size": 28}], "hop": 1}]}
{"timestamp": 1514768402, "result": [{"result": [{"rtt": -2.5, "ttl": 255, "from": "89.105.200.57", "size": 28},{"rtt": 19.955, "ttl": 255, "from": "89.105.200.57", "size": 28}], "hop": 2}]}
Для первого Traceroute без измененийбыть примененнымДля второго Traceroute поле result.result имеет два элемента (тип Signal), первый сигнал имеет отрицательное значение rtt, поэтому я должен удалить этот сигнал из result.result.Но второй сигнал не должен быть удален.
В результате выходной сигнал должен быть следующим:
{"timestamp": 1514768409, "result": [{"result": [{"rtt": 1.955, "ttl": 255, "from": "89.105.200.57", "size": 28}], "hop": 1}]}
{"timestamp": 1514768402, "result": [{"result": [{"rtt": 19.955, "ttl": 255, "from": "89.105.200.57", "size": 28}], "hop": 2}]}
Любая помощь, пожалуйста.Я новичок в искре и скале.Я пробовал много способов, но результат не такой, как ожидалось.