加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

斯卡拉从字符串unpickling

发布时间:2020-12-16 18:04:42 所属栏目:安全 来源:网络整理
导读:我尝试了以下单元测试. 首次测试testUnpickleJsonPickleFormat效果很好.它腌制一个字符串并取出泡菜. testUnpickleString {1,2}测试以反序列化String.但它们根本不起作用.我不知道哪里有什么想念我. import org.junit.Testimport scala.pickling._import sca
我尝试了以下单元测试.

首次测试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)
  }
}

我不知道如何在Scala Pickle框架中使用unpickle.

解决方法

你应该用

{
  "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来获取没有JSONPickle(…)的JSON:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读