我想将JsonPath的this example转换为Scala。使用java应该很容易:
List<String> authors = JsonPath.read(json, "$.store.book[*].author");
我转换为此Scala:
val authors = JsonPath.read(json, "$.store.book[*].author");
其中json是一个字符串。但是我得到了这个编译错误。
ambiguous reference to overloaded definition, both method read in object JsonPath of type [T](x$1: String,
x$2: String, x$3: <repeated...>[com.jayway.jsonpath.Filter[_]])T and method read in object JsonPath of type
[T](x$1: Any, x$2: String, x$3: <repeated...>[com.jayway.jsonpath.Filter[_]])T match argument types
(String,String)
我认为与
有关public static <T> T read(Object json, String jsonPath, Filter... filters)
和
public static <T> T read(String json, String jsonPath, Filter... filters)
来自com.jayway.jsonpath.JsonPath(版本0.9.1)。
如何消除此函数调用的歧义?
答案 0 :(得分:3)
对于这种特殊情况你可以做到
JsonPath.read(json.asInstanceOf[Object], "$.store.book[*].author")
这只会匹配一个重载方法(采用Object
的方法)。据推测,该方法调用json.toString
这是微不足道的,因为我们已经有String
。