playframework / playframework/play-json

NPE when Json.toJson

Open
#100 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Scala
Stars
375
Forks
140
Avg merge
1d 5h
Merged PRs (30d)
28

Description

Caused by: java.lang.NullPointerException
	at play.api.libs.json.LowPriorityWrites.$anonfun$traversableWrites$2(Writes.scala:307)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike.map(TraversableLike.scala:234)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at play.api.libs.json.LowPriorityWrites.$anonfun$traversableWrites$1(Writes.scala:307)
	at play.api.libs.json.Writes$$anon$6.writes(Writes.scala:142)
	at play.api.libs.json.PathWrites.$anonfun$nullable$2(JsConstraints.scala:184)
	at play.api.libs.json.OWrites$$anon$3.writes(Writes.scala:111)
	at play.api.libs.json.OWrites$MergedOWrites$.mergeIn(Writes.scala:75)
	at play.api.libs.json.OWrites$MergedOWrites$$anon$1.writeFields(Writes.scala:67)
	at play.api.libs.json.OWrites$MergedOWrites$$anon$1.writeFields(Writes.scala:63)
	at play.api.libs.json.OWrites$MergedOWrites$.mergeIn(Writes.scala:73)
	at play.api.libs.json.OWrites$MergedOWrites$$anon$1.writeFields(Writes.scala:66)
	at play.api.libs.json.OWrites$MergedOWrites$$anon$1.writeFields(Writes.scala:63)
	at play.api.libs.json.OWrites$OWritesFromFields.writes(Writes.scala:95)
	at play.api.libs.json.OWrites$OWritesFromFields.writes$(Writes.scala:93)
	at play.api.libs.json.OWrites$MergedOWrites$$anon$1.writes(Writes.scala:63)
	at play.api.libs.json.OWrites$$anon$2.$anonfun$contramap$1(Writes.scala:106)
	at play.api.libs.json.OWrites$$anon$3.writes(Writes.scala:111)
	at play.api.libs.json.OWrites$$anon$3.writes(Writes.scala:110)
	at play.api.libs.json.LowPriorityWrites.$anonfun$traversableWrites$2(Writes.scala:307)
	at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
	at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:59)
	at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:52)
	at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
	at scala.collection.TraversableLike.map(TraversableLike.scala:234)
	at scala.collection.TraversableLike.map$(TraversableLike.scala:227)
	at scala.collection.AbstractTraversable.map(Traversable.scala:104)
	at play.api.libs.json.LowPriorityWrites.$anonfun$traversableWrites$1(Writes.scala:307)
	at play.api.libs.json.Writes$$anon$6.writes(Writes.scala:142)
	at play.api.libs.json.Json$.toJson(Json.scala:186)
	at controllers.FacadesController.$anonfun$queryTypes$2(FacadesController.scala:28)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at controllers/FacadesController.scala:28 and trace the value passed to Json.toJson into play.api.libs.json.LowPriorityWrites.traversableWrites in Writes.scala:307. Compare the nullable path in JsConstraints.scala:184 and Json.scala:186, then reproduce the NPE with a focused case; done means the cause is confirmed and covered by a regression test.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
backend-api-design
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.