fsa*_*art 4 scala scala-pickling
我尝试了以下单元测试.
第一次测试testUnpickleJsonPickleFormat效果很好.它腌制一个字符串并取出泡菜.
testUnpickleString{1,2}测试以反序列化String.但它们根本不起作用.我不知道哪里有什么想念我.
import org.junit.Test
import scala.pickling._
import scala.pickling.json._
class PicklerTest {
@Test
def testUnpickleJsonPickleFormat {
val src = "elem 1"
val pckl = src.pickle
val res = pckl.unpickle[String]
println(src)
println(pckl.toString +"\n")
println(res)
}
@Test
def testUnpickleString1 {
val json = """JSONPickle({
| "tpe": "java.lang.String",
| "value": "elem 1"
| })""".stripMargin.trim
val pckl = JSONPickle(json.toString)
val res = pckl.unpickle[String]
}
@Test
def testUnpickleString2 {
val src = "elem 1"
val pckl = src.pickle
val pckl2 = JSONPickle(pckl.toString)
val res = pckl2.unpickle[String]
println(src)
println(pckl.toString +"\n")
println(res)
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Scala Pickle框架中使用unpickle.
你应该用
{
"tpe": "java.lang.String",
"value": "elem 1"
}
Run Code Online (Sandbox Code Playgroud)
没有JSONPickle(...):
val json = """{
"tpe": "java.lang.String",
"value": "elem 1"
}"""
JSONPickle(json).unpickle[String]
// String = elem 1
Run Code Online (Sandbox Code Playgroud)
JSONPickle({...})不是有效的JSON.
您还应该使用pckl.value的,而不是pckl.toString来获得JSON无JSONPickle(...):
val src = "elem 1"
val pckl = src.pickle
val pckl2 = JSONPickle(pckl.value)
pckl2.unpickle[String]
// String = elem 1
Run Code Online (Sandbox Code Playgroud)
你也可以像这样使用模式匹配:
val src = "elem 2"
val pckl = src.pickle
val pckl2 = pckl match {
case JSONPickle(value) => JSONPickle(value)
}
pckl2.unpickle[String]
// String = elem 2
Run Code Online (Sandbox Code Playgroud)