- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有以下 Json:
{
"web-category" : "macaroons",
"sub-categories" : [
{ "name" : "pink" },
{ "name" : "blue" },
{ "name" : "green" }
]
}
我已经将它作为 JsObject 在 Play 中使用。所以我现在可以成功地做到以下几点:
//(o is the JsObject)
val webCat:Option[String] = (o \ "web-category").asOpt[String]
println(webCat.toString)
>> Some(macaroons)
到目前为止,一切都很好。但是如何访问数组 Json 对象呢?我有这个...
val subCats:Option[JsArray] = (o \ "sub-categories").asOpt[JsArray]
println(subCats.toString)
>> Some([{"name" : "blue"},{"name" : "green"},{"name" : "pink"}])
但我需要的是获取 JsArray 并获取所有名称的列表,如下所示:
List("blue", "green", "pink")
不知道如何访问 JsArray。
感谢您在这方面的帮助。
最佳答案
我认为尽早从 JSON-land 迁移到 native-Scala-representation-land 通常是个好主意。例如,如果 obj
是你的 JsObject
,你可以这样写:
val subCategories = (obj \ "sub-categories").as[List[Map[String, String]]]
val names = subCategories.map(_("name"))
甚至:
case class Category(name: String, subs: List[String])
import play.api.libs.functional.syntax._
implicit val categoryReader = (
(__ \ "web-category").read[String] and
(__ \ "sub-categories").read[List[Map[String, String]]].map(_.map(_("name")))
)(Category)
然后:
obj.as[Category]
后一种方法使错误处理更加清晰(例如,您可以在此顶层将 as
替换为 asOpt
)并与其他 Reads
很好地组合code> 类型类实例——例如,如果你有这些对象的 JsArray
,你可以只写 array.as[List[Category]]
并得到你所期望的.
关于json - 在 Play Framework JsObject 中解析 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22045385/
JSObject.equals 的文档说: Determines if two JSObject objects refer to the same instance. 相反,以下表达式的计算结果为
在 Javascript 中,我有以下代码: var r=applet.foo({var0:99,var1:'foo',var2:applet}); 在我的 Java 小程序中,我有以下内容: pub
我动态生成一堆Reads[JsObject]然后我在 Seq[Reads[JsObject]] .为了实际应用所有这些单Reads[JsObject] ,我必须将它们与 and 合并合二为一Reads
我有 JsObject动态内容,例如可能如下所示: { "foo": "bar", "viewedTaskIds": [1, 2, 3, 4] } viewedTaskIds是一个整数
我正在尝试使 Java 小程序在其封闭环境中通过 javascript 进行交互。 到现在为止,我一直使用netscape.javascript.JSObject作为处理从JS调用Java函数的类型,
我正在尝试创建一个具有此结构的 JS 对象 { node1: [ 'test1.1', 'test1.2'], node2: ['test2.1', 'test2.2'] }
我正在尝试一些 Java/JavaScript 编码,但似乎遇到了困难。我试图将参数从 Java 传递到 JavaScript,但无论我做什么“JSObject jso = JSObject.getW
我正在使用 nashorn 脚本引擎,并且 JSObject 接口(interface)有问题。我创建了一个基类,通过成员的 HashMap 手动将函数添加到 JSObject: public abs
我有很多链接可以从 Web 获取数据,因此我想使用循环来检索每个 URL 的数据,但是我在将 JSObject 制作为数组时遇到了麻烦。 JSONObject[] jsObjectallnewstyp
我正在制作一个带有 Awesomium 网络浏览器的 C# Windows 窗体应用程序。 我正在尝试从表中获取一些行并将它们解析为数组。 JSPart 在浏览器中运行良好。 这是我在 C# 中使用的
我在 C# 中的表单上使用 Awesomium WebControl,我试图将信息传递到浏览器,表明已插入 USB 设备我的 USB 检测工作正常,但由于某种原因我无法构建 JSObject() 以及
我正在制作一个基于 Java 的基于网络的应用程序,它支持某些特定的请求(例如,每次打印时无需选择打印机),有些东西让我发疯。 我使用 JavaFX 实例化浏览器对象,一切正常,但当然我需要从 Jav
是否可以向 JsObject 添加新字段? val jsonObj = Json.obj() jsonObj.put("field" -> 100) JsString("Kip")) // newO
给定 Dart 代码 class LandingController { bool hideDiv = false; void doit() { new JsObject(cont
我有两个从案例类创建的 JsValue,即书籍和书籍详细信息 val bookJson = Json.tojson(Book) val bookDetailJson = Json.tojson(Boo
我有一个通过 Webswing 在网络上运行的 Java 应用程序服务器。Webswing 服务器将 Java 转换为 HTML5,以实现安全的 Web 使用。 我使用 netscape.javasc
applet javascript 调用是否以任何正确的方式序列化?我正在考虑实现一个模型,其中两个线程发送 javascript 命令。一个响应来自浏览器(js)的请求,另一个周期性地访问浏览器。我
我想创建一个 JSObject 并用属性填充它(有点像 HashMap),但不转换 eval("({})") 的结果,因为我认为不断评估这样的东西会确实对性能有影响。有办法吗? 最佳答案 如果你想使用
我的 xhtml 页面中有一个 Javascript 函数,它执行以下操作: HTML 文件: function getData(){ var data = document.getElemen
这个问题在这里已经有了答案: Why is getWindow() not able to be resolved? (3 个答案) 关闭 8 年前。 我试图在 JApplet 的 init 方法中
我是一名优秀的程序员,十分优秀!