When you try to parse numbers like 1e6 as int or long, parser ignore e part, e.g
import zio.json.*
JsonDecoder.int.decodeJson("1e6") // 1
JsonDecoder.long.decodeJson("1e6") // 1
JsonDecoder.double.decodeJson("1e6") // 1000000.0
Also, e part remains in the buffer, so produce very strange error on parse, for example
import zio.json.*
final case class Test(foo: Long)
object Test {
implicit val decoder: JsonDecoder[Test] = DeriveJsonDecoder.gen
}
JsonDecoder[Test].decodeJson(""" { "foo": 1e6 } """) // Left((expected ',' or '}' got 'e'))
This looks like to be incorrect behavior, I would expect the number to be parsed and then converted to an integer.