首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >被调用的方法并不是预期的

被调用的方法并不是预期的
EN

Stack Overflow用户
提问于 2014-11-12 09:22:46
回答 1查看 59关注 0票数 0

上周,我花了很多(太多)时间在一个奇怪的问题上。我想使用gnieh.diffson来修补现有的对象,客户端用格式良好的Json修补程序发送PATCH /api/test/patch请求。然后解析该修补程序并应用它:

代码语言:javascript
运行
复制
import gnieh.diffson._ 
val patch = JsonPatch.parse(request.body.asText.getOrElse("")) 
val workspace = """{"node":{}}""" 
val result = patch(workspace) 
println(result)

这段代码在简单的App中运行良好,但在play Controller上失败:

错误PatchException::元素节点不存在于“{\”节点\“:{}}”(JsonPatch.scala:140)中 误差gnieh.diffson.Operation.action(JsonPatch.scala:140) 误差gnieh.diffson.Add.action(JsonPatch.scala:174) .

解决办法是限定每件事。

gnieh.diffson.JsonPatch#apply类有3个apply方法:

代码语言:javascript
运行
复制
def apply(json : scala.Predef.String, compacted : scala.Boolean = { /* compiled code */ }) : scala.Predef.String = { /* compiled code */ } 
def apply(value : net.liftweb.json.JValue) : net.liftweb.json.JValue = { /* compiled code */ } 
def apply[T](<value : T>)(implicit evidence\$1 : scala.Predef.Manifest[T]) : T = { /* compiled code */ } 

我在想,第一个被调用是因为“工作区”是一个字符串,但我错了。被调用的方法是最后一种方法,有隐含的证据。

我目前的解决方案是将工作区解析为一个net.liftweb.json.JValue,但我对此并不满意,因为:

  • 我不明白为什么叫它是最后一种方法。
  • 我必须将net.liftweb.json.JValue格式化为string以重新创建一个play.api.libs.json.JsObject。(因为我在以后的过程中需要它)

你能解释一下为什么被调用的方法比较复杂吗?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2014-11-12 09:33:51

合同中有一个条款,它抛弃了使用默认args的替代方案:

http://www.scala-lang.org/files/archive/spec/2.11/06-expressions.html#overloading-resolution

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26883325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档