Tôi đang sử dụng Play! Scala 2.2 và tôi có một vấn đề để biểu hiện một class
trong Json
:Chơi Scala: json writer cho các lớp lồng nhau
Tôi có hai lớp với một phụ thuộc vào người kia, như sau:
case class Artist(id: String, cover: String, website: List[String], link: String, Tracks: List[Track] = List())
case class Track(stream_url: String, title: String, artwork_url: Option[String])
Và nhà văn tiềm ẩn của họ:
implicit val artistWrites: Writes[Artist] = Json.writes[Artist]
implicit val trackWrites: Writes[Track] = Json.writes[Track]
Các tác giả hoạt động tốt như sau:
println(Json.toJson(Track("aaa", "aaa", Some("aaa"))))
println(Json.toJson(Artist("aaa", "aaa", List("aaa"), "aaa", List())))
có nghĩa là Artist
có một số trốnglist of tracks
. Nhưng nếu tôi muốn làm điều này:
println(Json.toJson(Artist("aaa", "aaa", List("aaa"), "aaa", List(SoundCloudTrack("ljkjk", "ljklkj", Some("lkjljk"))))))
tôi nhận được một execution exception
: [NullPointerException: null]
bạn có thể vui lòng giải thích cho tôi những gì tôi đang làm sai? Cảm ơn;)
Tôi không biết điều này! Cảm ơn;) – Simon
Thật dễ dàng để rơi vào cái bẫy này bởi vì trình biên dịch không phát ra bất kỳ cảnh báo nào về điều này. Có lẽ 99% số NPE mà tôi nhận được trong Scala xảy ra từ các vấn đề về thứ tự khởi tạo. –