Skip to content

How to properly use PlayJsonCodecs.JsValueCodec? #15

@jlogeart

Description

@jlogeart

@velvia

I tried a super simple App using play.api.libs.json.Json:

import org.velvia.msgpack
import org.velvia.msgpack.PlayJsonCodecs.JsValueCodec
import play.api.libs.json.{JsValue, Json}

object Velvia extends App {
  val js: JsValue = Json.parse("""{"amount":40,"currency":"USD","label":"$40.00"}""")
  val p: Array[Byte] = msgpack.pack(js)

  println(java.util.Arrays.toString(p))

  val u = msgpack.unpack[JsValue](p)
}

is returning:

[-125, -90, 97, 109, 111, 117, 110, 116, -110, 0, -60, 1, 40, -88, 99, 117, 114, 114, 101, 110, 99, 121, -93, 85, 83, 68, -91, 108, 97, 98, 101, 108, -90, 36, 52, 48, 46, 48, 48]
Exception in thread "main" org.velvia.InvalidMsgPackDataException: Input contains invalid type value 0
	at org.velvia.msgpack.Codec$$anonfun$defaultUnpackFunc$1.apply(Codecs.scala:30)
	at org.velvia.msgpack.Codec$$anonfun$defaultUnpackFunc$1.apply(Codecs.scala:30)
	at org.velvia.msgpack.Codec$class.unpack(Codecs.scala:20)
	at org.velvia.msgpack.PlayJsonCodecs$JsValueCodec$.unpack(PlayJsonCodecs.scala:49)
	at org.velvia.msgpack.Format$.unpackSeq(Format.scala:205)
	at org.velvia.msgpack.CollectionCodecs$SeqCodec$$anonfun$3$$anonfun$apply$1.apply(CollectionCodecs.scala:17)
	at org.velvia.msgpack.CollectionCodecs$SeqCodec$$anonfun$3$$anonfun$apply$1.apply(CollectionCodecs.scala:17)
	at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:52)
	at org.velvia.msgpack.Codec$class.unpack(Codecs.scala:20)
	at org.velvia.msgpack.PlayJsonCodecs$JsValueCodec$.unpack(PlayJsonCodecs.scala:49)
	at org.velvia.msgpack.Format$$anonfun$unpackMap$1.apply(Format.scala:218)
	at org.velvia.msgpack.Format$$anonfun$unpackMap$1.apply(Format.scala:217)
	at scala.collection.immutable.Range.foreach(Range.scala:160)
	at org.velvia.msgpack.Format$.unpackMap(Format.scala:217)
	at org.velvia.msgpack.CollectionCodecs$CMapCodec$$anonfun$9$$anonfun$apply$3.apply(CollectionCodecs.scala:46)
	at org.velvia.msgpack.CollectionCodecs$CMapCodec$$anonfun$9$$anonfun$apply$3.apply(CollectionCodecs.scala:46)
	at scala.Function1$$anonfun$andThen$1.apply(Function1.scala:52)
	at org.velvia.msgpack.Codec$class.unpack(Codecs.scala:20)
	at org.velvia.msgpack.PlayJsonCodecs$JsValueCodec$.unpack(PlayJsonCodecs.scala:49)
	at org.velvia.msgpack.package$.unpack(package.scala:12)
	at org.velvia.msgpack.package$.unpack(package.scala:53)
	at Velvia$.delayedEndpoint$Velvia$1(Velvia.scala:14)
	at Velvia$delayedInit$body.apply(Velvia.scala:7)
	at scala.Function0$class.apply$mcV$sp(Function0.scala:34)
	at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12)
	at scala.App$$anonfun$main$1.apply(App.scala:76)
	at scala.App$$anonfun$main$1.apply(App.scala:76)
	at scala.collection.immutable.List.foreach(List.scala:392)
	at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35)
	at scala.App$class.main(App.scala:76)
	at Velvia$.main(Velvia.scala:7)
	at Velvia.main(Velvia.scala)

I am using

libraryDependencies += "com.typesafe.play" %% "play-json" % "2.6.6"
libraryDependencies += "org.velvia" %% "msgpack4s" % "0.6.0"

What am I doing wrong?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions