-
Notifications
You must be signed in to change notification settings - Fork 149
Open
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed💎 Bounty
Description
Specifically, this file https://github.com/statsbomb/open-data/blob/master/data/competitions.json
The file is formatted as a json array, and I would like to read the file in a streaming fashion.
When opening the file with:
json.readJsonAs(path)
.tap(foo => ZIO.logInfo(foo.asArray.toString))
.runCount
The entire file is read into a a single item, a json list (instead of providing a stream of each item in the list).
It also throws this error, but seems to recover from it:
22:58:34.586 [zio-default-blocking-2] DEBUG zio.json.JsonDecoderPlatformSpecific -- timestamp=2024-02-22T22:58:34.583386+01:00 level=DEBUG thread=zio-fiber-7 message="Fiber zio-fiber-7 did not handle an error" cause=
zio.json.internal.UnexpectedEnd: if you see this a dev made a mistake using OneCharReader
When trying this to read the file as a Stream[Competition]
ZStream
.fromPath(path.toPath)
.via(
ZPipeline.utf8Decode >>>
stringToChars >>>
JsonDecoder[Competition].decodeJsonPipeline(JsonStreamDelimiter.Array)
)
.runCount
I get a StackOverflowError
23:00:26.273 [ZScheduler-Worker-9] DEBUG foo.bar.Main.run -- timestamp=2024-02-22T23:00:26.271057+01:00 level=DEBUG thread=zio-fiber-5 message="Fiber zio-fiber-5 did not handle an error" cause=
java.lang.StackOverflowError: null
The stack points directly to the derived Competition class json codec.
Class and codec:
case class Competition(
competition_id: Option[Int],
season_id: Option[Int],
country_name: Option[String],
competition_name: Option[String],
competition_gender: Option[String],
competition_youth: Option[Boolean],
competition_international: Option[Boolean],
season_name: Option[String],
match_updated: Option[String],
match_available: Option[String]
)
object Competition {
implicit val decoder: JsonDecoder[Competition] = DeriveJsonDecoder.gen[Competition]
}
ZIO-json version:
0.6.2
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workinghelp wantedExtra attention is neededExtra attention is needed💎 Bounty