问题标签 [json4s]
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 - 检查对象是否在 json4s/lift-json 中有字段
我有一个带有一些字段的 json,我想检查其中一些是否存在。我正在提取值并针对 JNothing 进行测试,但它太冗长了:
是否有更紧凑的方法来使用 json4s/lift-json 检查 json 对象中是否存在字段?理想情况下是这样的:
json - 如何在使用 Json4s 序列化期间重命名字段?
如何轻松重命名 json4s 中的字段名称?从他们的文档中,我尝试了以下代码段,但它似乎没有将该serial
字段重命名为id
.
使用 Jackson 库,通过声明注释非常容易。但我正在寻找一个纯粹的 scala 库/解决方案。有没有更好的库或方法在 scala 中通过简单的字段重命名进行对象到 json 的序列化?
json - Json4s 产生奇怪的 Json
这就是我所拥有的:
这就是我得到的:
但这就是我想要回来的:
我在这里做错了什么?
细节
scala - lift-json XPath \\ 运算符具有不同的返回类型,具体取决于 num 匹配项
对于具有相同模式的数据的相同查询,我希望json \\ "something"
始终返回相同类型的对象(或者至少是始终同构的对象),但是,请考虑:
...因此 n = 0 和 n >= 2 的情况得到一致处理,但 n = 1 的特殊情况是JValue
.
为什么会这样?是设计使然吗?
与在 a 上的映射进行比较List
与 Scala 的 XML 比较
那么为什么不应该期望 lift-json\\
运算符具有相同的语义呢?
http://liftweb.net/api/26/api/#net.liftweb.json.package上的文档有:
按名称查询JSON 字段的类似 XPath 的表达式。返回所有匹配的字段。
json - 如何将元组列表序列化为 JSON 对象
我有一个List[(String, Any)]
在 json4s 中,我write(lst)
用来序列化 JSON。如何在保留顺序的同时将其序列化为 JSON 对象而不是列表?
注意:我知道这write(lst.toMap)
将序列化为一个对象,但我想保留顺序。
scala - Json4s 支持带有 trait mixin 的案例类
我正在尝试使用支持杰克逊的 json4s 序列化 scala 案例类。但是对于我试图混合特征的场景,它无法序列化类。下面是一个代码示例。
当我执行下面的代码时,我得到空的大括号,没有序列化的值,但是如果我删除 trait mixin,那么 CrystalFieldInfo 值会被正确序列化
将不胜感激任何洞察这个问题。提前致谢
json - 在 Scala 中使用 LINQ 样式的查询解析 JSON
假设我需要解析一个 JSON(见下文)。
首先,我正在解析“状态”字段以获取case class Status
(见下文)的实例
是否有意义 ?
的类型statusList
是List[Status]
。它包含一个Status
项目。如果解析失败,statusList
则为空。我不喜欢它,因为我想要Option[Status]
而不是List[Status]
我可以很容易地转换List[Status]
成Option[Status]
withheadOption
但我想Option[Status]
直接得到。
我可以解析 JSONjson4s
以获取 Option[Status]
而无需先获取List[Status]
吗?
scala - 如何“脱糖”这个 Scala 语句?
Scala 中的 LINQ 样式查询json4s
如下所示:
我不明白(2)是如何工作的。你会如何去糖这个 -for
声明?
json - 将键值字符串转换为 Scala Map 的方法
在这种情况下,我正在从 KV 存储(Redis)读取数据。返回的数据格式如下。
键是String
,值是Int
。我想把它转换成Map[String,Int]
我查看了json4s JSON API,我当前的代码如下所示。有没有更好/更容易/更清洁的方法来做到这一点?
json - 调试json4s读取反序列化错误
我正在尝试使用我无法控制的 API,该 API 的文档记录不佳且有些不一致。这意味着有时,API 返回的类型与记录的类型或您通常看到的类型不同。对于这个例子,我们将看一个在我通常会看到字符串的地方返回一个数组的情况。这使得 API 很糟糕,但我真正的问题是:我怎样才能更容易地追踪这些东西?现在,错误看起来像这样:
在破译问题之后(为什么JValue::toString
不发出 JSON 字符串让我完全感到困惑),我可以弄清楚当我case class
只能够处理String
s 时 API 返回了一个数组。伟大的。我的问题是,在我的对象模型和 JSON 的内容之间找到这种差异似乎比它应该做的要困难得多。
目前,这是我寻找解码错误的工作流程:
- 希望不良数据有某种识别标记。如果这不是真的,那么这是更多的猜测,您将不得不为每个看起来像坏位的条目重复以下步骤。
- 经历将
JArray(List(JString(...), ...))
错误消息转换为有效 JSON 的麻烦,希望我在获取数据的 API 端点上以相同的方式编码 JSON。如果这不是真的,那么我使用 JSON 格式化程序 (jq
) 来一致地格式化所有数据。 - 在源数据中找到解码错误的来源。
- 回溯数组和对象,以发现我需要如何更改对象模型以更准确地表示从 API 返回给我的数据。
一些背景知识:我来自 C++,为此我推出了自己的 JSON 反序列化框架。使用我构建的库时的等效错误是:
这是我使用手卷库时的过程:
- 将预期类型 (
std::string
) 与实际找到的数据() 进行比较,["3c8723eceb1a","cba8849e7a2f"]
并更改我的数据模型以获取源中数据的路径 (result.taskInstances[914].subtasks[5].identifier
)
正如你所看到的,我可以立即跳到我实际遇到的问题上。
我的问题是:有没有办法更快地调试我的数据模型和我从 API 返回的结果之间的不一致?
我正在使用json4s-native_2.10
版本3.2.8
。
一个简化的例子:
不与 Scala 啮合class
: