Scala从字符串中脱颖而出



我尝试了以下单元测试。

第一次测试testUnpickleJsonPickleFormat效果很好。它腌制了一根绳子,然后挑出泡菜。

testUnpickleString{1,2}测试以解开字符串。但是他们根本不起作用。我不知道在哪里想念我。

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)
  }
}

我不知道如何使用Scala Pickle Framework。

您应该使用

{
  "tpe": "java.lang.String",
  "value": "elem 1"
}

没有JSONPickle(...)

val json = """{
  "tpe": "java.lang.String",
  "value": "elem 1"
}"""
JSONPickle(json).unpickle[String]
// String = elem 1

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

您也可以使用类似的模式匹配:

val src = "elem 2"
val pckl = src.pickle
val pckl2 = pckl match {
  case JSONPickle(value) => JSONPickle(value)
} 
pckl2.unpickle[String]
// String = elem 2

相关内容

  • 没有找到相关文章