0

I have tried to create a json object using play.api.libs.json. I got following two compile errors. I tried several ways but I could n`t find any solution for this.

Here is the compile errors

No implicit format for Array[models.Graphs.piechartdata] available.

Read from stdout: implicit val piec = Json.writes[piechart] implicit val piec = Json.writes[piechart] Read from stdout: ^

No Json serializer found for type models.Graphs.piechart. Try to implement an implicit Writes or Format for this type. Read from stdout: println(Json.toJson(p).toString) println(Json.toJson(p).toString) Read from stdout: ^

Here is my Code

package models.Graphs
import play.api.Play.current
import play.api.libs.json._
import scala.language.postfixOps
import scala.collection.mutable.ArrayBuffer

case class piechart(element:String,data:Array[piechartdata]) 
case class piechartdata(label:String,value:Int)

object GraphsModel{

    implicit val piec = Json.writes[piechart]
    implicit val piecdata = Json.writes[piechartdata]

   def createPieChart()={
       var ar = ArrayBuffer[piechartdata]()
           ar += piechartdata("Download Sales",12)
           ar += piechartdata("In-Store Sales",30)

        var arr:Array[piechartdata]=ar.toArray   

       var p=piechart("donut-example",arr)   

       println(Json.toJson(p).toString)

   } 

}

Actually I need to create following json object

{ element: 'donut-example', data: [ {label: "Download Sales", value: 12}, {label: "In-Store Sales", value: 30} ] }

1 Answer 1

0

I solve this, I have add following lines

implicit val implicitpiecdata = new Writes[piechartdata] {
    def writes(q: piechartdata): JsValue = {
      Json.obj(
        "label" -> q.label,
        "value" -> q.value
      )
    }
  }


   implicit val implicitQuoteWrites = new Writes[piechart] {
    def writes(q: piechart): JsValue = {
      Json.obj(
        "element" -> q.element,
        "data" -> q.data
      )
    }
  }

except of

 implicit val piec = Json.writes[piechart]
   implicit val piecdata = Json.writes[piechartdata]
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.