当前位置: 首页 > 面试题库 >

Play Framework-将字段添加到JSON对象

奚光霁
2023-03-14
问题内容

我在使用Scala将字段添加到Play Framework中的Json对象时遇到问题:

我有一个包含数据的案例类。例如:

case class ClassA(a:Int,b:Int)

并且我能够使用Json Writes创建一个Json对象:

val classAObject = ClassA(1,2)
implicit val classAWrites= Json.writes[ClassA]
val jsonObject = Json.toJson(classAObject)

并且Json看起来像:

{ a:1, b:2 }

假设我想向Json对象添加一个附加的’c’字段。结果:

{ a:1, b:2, c:3 }

如何在不创建新案例类或使用Json.obj自己创建Json对象的情况下做到这一点?我正在寻找类似的东西:

jsonObject.merge({c:3})

任何帮助表示赞赏!


问题答案:

JsObject有一种+方法可让您向对象添加字段,但是很遗憾,您jsonObject的类型是JsValue,而不是JsObject。您可以通过两种方法解决此问题。首先是使用as

 scala> jsonObject.as[JsObject] + ("c" -> Json.toJson(3))
 res0: play.api.libs.json.JsObject = {"a":1,"b":2,"c":3}

as本质上讲,您很沮丧-
告诉编译器,“您只知道这是一个JsValue,但请相信我,它也是一个JsObject”。在这种情况下,这是安全的,但这不是一个好主意。一种更原则的方法是OWrites直接使用:

scala> val jsonObject = classAWrites.writes(classAObject)
jsonObject: play.api.libs.json.JsObject = {"a":1,"b":2}

scala> jsonObject + ("c" -> Json.toJson(3))
res1: play.api.libs.json.JsObject = {"a":1,"b":2,"c":3}

也许有一天,该Json对象将具有toJsonObject需要OWrites实例的方法,而这种过于显式的方法将不是必需的。



 类似资料:
  • 我正在尝试使用JOLT进行JSON转换,我想我已经很接近了,但是我不能做的是为每个当前没有出现的字段添加一个新字段。 我已经阅读了很多教程,下面的代码是我希望能够工作的。然而,它似乎没有添加到新的“名称”字段中。 这是我的震撼: 这是输出: 我希望它是这样的: 谁能告诉我哪里出错了?显然,默认值用于添加新项目,但它似乎没有执行任何操作。

  • 本文向大家介绍silverstripe 将字段添加到DataObject,包括了silverstripe 将字段添加到DataObject的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用该DataExtension机制将额外的数据库字段添加到现有的DataObject中: 并应用扩展名: 这将HairColour作为字段添加到Member对象。

  • 问题内容: 我的表格中有3个字段。我有一个提交按钮和一个“添加其他字段”按钮。我知道我可以使用表单类中的方法添加字段。 我是Python和Django的新手,并且陷入了一个初学者的问题;我的问题是: 当我单击“添加其他字段”按钮时,添加其他字段的过程是什么? 是否需要再次呈现表单? 我如何以及何时打电话,甚至必须打电话? 如何将参数传递给? 问题答案: 你的表单必须基于从POST传递给它的一些变量

  • 问题内容: 我有一个字段是,保持日期值,我从转换到。 有些记录有八个字符,有些记录有七个字符。我想通过将前导零添加到具有7的前导零来使它们具有相同的长度。 8个字符的示例:12162003 7个字符的示例:5072004(需要前导零) 查询: 问题答案: 可以在更多情况下使用的功能是REPLICATE。它将一个X值的次数连接到一个字符串。 这将花费您的生日的长度,将其减去8,然后在前面放置多个前导

  • 我使用iText将数据填充到PDF中现有的AcroForm字段中。 我现在正在寻找将新的AcroForm字段添加到PDF的解决方案。iText是否可以做到这一点?如果是,我该如何做到这一点?

  • 问题内容: 我正在尝试自动将新对象添加到现有json文件中。我在网上四处张望,却发现添加了数据和东西,但没有发现整个对象。这就是我要编辑的文件的外观: 我想去 谢谢您的所有答复,但我认为所有人都无法完全理解我的意思。我已经尝试了一些答案,但是后来我明白了: 我想在[]之间保持平衡。 问题答案: 如果使用json.NET,则可以简单地反序列化和序列化json。