问题标签 [upickle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - Scala - Upickle/Ujson 库的自定义编码器
我正在使用 Upickle/Ujson 并想编写一个自定义编码器来掌握事情的窍门。
假设我有以下层次结构(来自这里的教程:链接)
首先,这无法编译。为什么会这样?我误解了页面吗?
第二
如果我想序列化 Bar 并同时添加一个字段 "parent":"TypedFoo" 怎么办?所以酒吧看起来像:
{"parent":"TypedFoo", "$type":"package.TestDrive.TypedFoo.Bar","i":100}
我该怎么做呢?
scala - 是否可以将空序列解析为 Obj?
我正在使用 Scala 的 uPickle 来解析这个 JSON:
问题是“收入”有时是一个对象,有时是一个空数组。如果它是一个空数组,这意味着该值不存在(它应该为null或不存在,但我没有生成这个json,所以我必须适应)。
是否有可能说服 uPickle 以便当它期望 aMap[_,_]
并获得一个空序列时,发出一个空对象?我想像这样为上面的 json 声明一个案例类:
目前 uPickle 将中止错误“期望对象,得到序列”。
我也许可以在解析之前对 JSON 文件进行预处理,但首先我想知道 uPickle 是否能够做这样的事情?
我知道我可能可以使用自定义pickler来做到这一点,但是我有几十个结构要解析,每个结构都有相同的规则(即空对象的空序列),这样做真的很好它以更一般的方式,并自动在任何地方应用它。
scala - 标记阅读器的自定义pickler
我正在使用 uPickle 1.2.0。我有这个示例代码:
它工作正常。但是,假设我只想创建一个自定义选择器,为andTypeB
保留默认选择器。这在 uPickle 中可行吗?我正在尝试使用传统方法,该方法适用于简单(未键入)的字段:TypeA
TypeC
这编译得很好,但在运行时抛出异常:
uPickle 支持吗?我应该以不同的方式为标记类定义自定义pickler吗?我在文档中没有看到我的案例的任何示例。
scala - 是否可以为 akka 编写一个令人讨厌的序列化程序
我想使用 upickle 实现一个 akka 序列化器,但我不确定它是否可能。为此,我需要实现类似以下的序列化器:
问题是我不能在没有相关的 Writer/Reader 的情况下调用 writeBinary/readBinary。有没有办法可以根据对象类查找这些?
scala - 使用 BooPickle 和 RocksDb 将额外字节添加到序列化中
所以我使用 BooPickle 在将 Scala 类写入 RocksDB 之前对其进行序列化。要序列化一个类,
我有这个隐式类
该方法toStringEncoding
是必要的,因为 BooPickle 没有以与 RocksDb 对键排序的要求很好地配合的方式序列化案例类。然后我将一堆键值对写入几个 SST 文件,并将它们摄取到 RocksDb 中。但是,当我从数据库中查找密钥时,找不到它们。
如果我遍历数据库中的所有键,我发现键被成功写入,但是额外的字节被写入数据库中的字节表示。例如,如果key.serialize
输出这样的东西
我会在数据库中找到是这样的
额外的非零字节替换字节数组末尾的零字节。另外字节数组的大小也不同。当我调用该serialize
方法时,字节数组的大小为 512,但是当我从数据库中检索密钥时,大小为 4112。有人知道可能是什么原因造成的吗?
scala - scala upickle / ujson中JSON null的惯用处理
我是 Scala 的新手,想学习解决常见问题的惯用方法,例如 Python 的 pythonic。我的问题是关于使用upickle读取 JSON 数据,其中 JSON 值在存在时包含字符串,在不存在时包含 null。我想使用自定义值来替换 null。一个简单的例子:
问题在于字段"sometimes"
:当为 null 时,我们不能应用.str
(或任何其他函数映射到除 null 之外的静态类型)。我正在寻找类似的东西, null 的替代品m("sometimes").str("DEFAULT").length
在哪里。"DEFAULT"
想法 1 使用模式匹配,以下工作:
鉴于 Scala 的简洁语法,这看起来有点复杂,并且在处理多个值时会重复。
想法 2 对相关问题的回答提到创建具有默认值的案例类。对于我的问题,当根据上下文需要不同的替换值时,案例类的创建对我来说似乎不灵活。
Idea 3
Anwers to another question (not specific to upickle)讨论使用Try().getOrElse()
,即:
但是,讨论提到为常规程序路径抛出异常是昂贵的。
解决这个问题的惯用但简洁的方法是什么?
json - scala ujson.read() 返回 ujson.Obj
我正在尝试使用李浩毅的 ujson 读取一个 json 字符串。这是字符串:
这就是我的阅读方式:
但是,返回类型是ujson.Obj
,而不是Arr(ArrayBuffer(Obj)
,正如预期的那样,当我尝试获取时jsonData(0)
,我得到的是json.Value$InvalidData: Expected ujson.Arr
。
我问这个问题是因为我尝试使用 ujson 对象来创建一个 upickle 对象,但我不能,我怀疑这是因为这个初始错误。
关于为什么会发生这种情况的任何想法?任何帮助将不胜感激!提前致谢!!
scala - Scala - 错误 java.lang.NoClassDefFoundError: upickle/core/Types$Writer
我是 Scala/Spark 的新手,所以请放轻松:)
我正在尝试在 AWS 上运行 EMR 集群,运行我打包的 jar 文件sbt package
。当我在本地运行代码时,它工作得非常好,但是当我在 AWS EMR 集群中运行它时,我收到一个错误:
ERROR Client: Application diagnostics message: User class threw exception: java.lang.NoClassDefFoundError: upickle/core/Types$Writer
据我了解,此错误源于 scala/spark 版本的依赖关系。
所以我使用 Scala 2.12 和 spark 3.0.1,在 AWS 中我使用的是 emr-6.2.0。
这是我的 build.sbt:
我错过了什么?
谢谢!