我在将json对象添加到数组项中时遇到问题.这个问题让我困扰了很长一段时间,但我仍然不知道如何解决它.

我想在数组项中添加一个json对象,下面是现有的json对象:

{
  "key1":[ 
          {"key11":"value11"},{"key12":"value12"}
         ]
}

我希望它能够添加一个新的json对象进行转换:

{
   "key1":[ 
           {"key11":"value11","key111":"value111"},{"key12":"value12"}
         ]
}

这是我的代码:

val json = Json.obj( 
         "key1" ->Json.arr(
                        Json.obj("key11" -> "value11"),Json.obj("key12" -> "value12")
         )
)

val transform= (__ \ 'key1 )(0).json.update(  __.read[JsObject].map{ o => o ++ Json.obj( "key111" -> "value111" ) } )

json.validate(transform)

但最后一行给出了以下例外情况.是否有人可以就如何实现将json对象添加到数组项目中的目标给出建议?

java.lang.RuntimeException: expected KeyPathNode
at play.api.libs.json.JsPath$.step$1(JsPath.scala:141)
at play.api.libs.json.JsPath$.step$1(JsPath.scala:144)
at play.api.libs.json.JsPath$.play$api$libs$json$JsPath$$buildSubPath$1(JsPath.scala:150)
at play.api.libs.json.JsPath$$anonfun$createObj$1.apply(JsPath.scala:155)
at play.api.libs.json.JsPath$$anonfun$createObj$1.apply(JsPath.scala:153)
at scala.collection.IndexedSeqOptimized$class.foldl(IndexedSeqOptimized.scala:51)
at scala.collection.IndexedSeqOptimized$class.foldLeft(IndexedSeqOptimized.scala:60)
at scala.collection.mutable.WrappedArray.foldLeft(WrappedArray.scala:34)
at play.api.libs.json.JsPath$.createObj(JsPath.scala:153)
at play.api.libs.json.PathReads$$anonfun$jsUpdate$1$$anonfun$apply$15.apply(JsConstraints.scala:81)
at play.api.libs.json.PathReads$$anonfun$jsUpdate$1$$anonfun$apply$15.apply(JsConstraints.scala:81)
at play.api.libs.json.JsResult$class.map(JsResult.scala:73)

谢谢收听

西里尔

解决方法

您需要选择整个数组并将其转换为新数组,如下所示:
val transform= (__ \ "key1" ).json.update(
  __.read[JsArray].map { a => 
    JsArray(a.value.updated(0,a(0).as[JsObject] ++ Json.obj("key111" -> "value111")))
  }
)

playframework – 如何更新json的索引数组项的更多相关文章

  1. ios – NSArray indexOfObject返回nil

    任何想法为什么我不能得到一个我确定在数组中存在的对象的索引?相反,我没有……

  2. ios – 搜索数组swift中的对象

    我正在尝试使用UISearchController创建搜索功能.但是,我似乎无法使其与我的团队对象一起工作.我首先创建了一个包含id,name和shortname的TeamObject.然后我从一个url中检索teamData,并将TeamObjects添加到一个填充到tableView中的数组中.这个tableView包含一个searchController,它假设过滤数据,但没有任何反应.阵列

  3. ios – 通过objectID获取NSManagedObjects数组返回空数组

    TL;DR其持久性存储协调器不再在内存中的NSManagedobjectID会丢失其NSEntityDescription(实体),并且不会将等同于来自不同持久性存储协调器的NSManagedobjectID,即使它们的URIRepresentation相同也是如此.沿着兔子洞甜蜜……),因为这些objectID来自的PSC现在不再在内存中,并且NSManagedobjectID必须保持对必须由PSC持有的NSEntityDescription(实体)的一周引用.正如评论者所怀疑的那样,零实体似乎会引起问

  4. ios – iPhone MKMapView – MKPolygon问题

    我试图在iOS4.0中的MKMapView上绘制一个MKpolygon.我有一个NSArray,它包含包含纬度/经度属性的自定义对象.我有一个代码示例如下:我明白的是:>我需要创建MKpolygon>Ddd覆盖MapView>这将转动将触发MKpolygonView的创建.我的问题是如何使用NSArray(coordinateData)中包含的自定义对象,并将这些对象转换为CLLocationCo

  5. ios – 如何在Qualcomm的Vuforia示例应用程序中进行更改

    )有索引,在banana.h中不存在所以请注意这一点

  6. ios – 如何使用对象数组填充TableView?

    我有一个TableView控制器,我想用数组中的对象填充.我正在使用StoryBoard.另外,我不确定是否需要将标签放在故事板中的CellPrototype中作为一种占位符?本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  7. ios – 从核心数据实体获取属性值数组的有效方式是什么?

    考虑以下几点:这将返回一个Person对象数组.我想要的是这些对象的Person.name值数组.目前我走结果数组,提取名称并构建一个新的数组.有没有更清洁,更快的方式来做到这一点?

  8. ios – 在完成块中调用操作而没有内存泄漏

    我可以看到一种方式.这是创建一个只有数组作为属性的对象,并将此对象传递给Operation然后我将能够检索对象中的数组,但肯定它确实存在更好的方法.谢谢解决方法

  9. Swift Tutorial(swift 教程) 3:Arrays, Objects, and Classes数组,对象和类

    期间我们会学习到swift的一些新内容,比如数组,对象,类。GettingStarted打开xcode,点击Getstartedwithaplayground:name设置为Person,theplatform设置为iOS,点击Next.保存输出自动创建的语句:ClassesandObjects类和对象类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。接下来我们会创建一个名为Person.的类,并创建与这个类相关的方法和属性来服务于你的程序。首先在playground:中加

  10. Swift中的集合类数据结构

    在那种情况下,你将会需要一种基本的集合类数据结构。继续学习,你将会比较成熟的Cocoa数据结构与对应的纯Swift结构的性能。常见iOS数据结构iOS中三种最常用的数据结构是arrays,dictionaries和sets。除了在Swift和Objective-C中旧的Foundation框架中的数据结构,现在又有了新的仅支持Swift版本的数据结构与语言紧密结合在一起。Swift数组是同质的,意味着每一个Swift数组都只包含一种类型的对象。

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部