Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提取[T]时的JSON4S错误_Json_Scala_Jackson - Fatal编程技术网

提取[T]时的JSON4S错误

提取[T]时的JSON4S错误,json,scala,jackson,Json,Scala,Jackson,我使用json4s根据案例类提取数据,但我得到了一个“未知错误”。我的scala版本是2.10.2,Json4S是3.2.10 我的代码如下所示: import org.json4s._ import org.json4s.jackson.JsonMethods._ implicit val formats = org.json4s.DefaultFormats case class Person(name: String, age: Int) class user{ def add()

我使用json4s根据案例类提取数据,但我得到了一个“未知错误”。我的scala版本是2.10.2,Json4S是3.2.10

我的代码如下所示:

import org.json4s._
import org.json4s.jackson.JsonMethods._ 
implicit val formats = org.json4s.DefaultFormats

case class Person(name: String, age: Int)

class user{

def add(){
val json="""{"1":{"name":"user1", "age":16}}"""

    print(parse(json).extract[Map[String,Person]])
}
}
有人能告诉我这里遗漏了什么吗

我根据这里给出的建议进行了尝试:

但我仍然得到以下错误:

java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object;
    at org.json4s.MonadicJValue.$bslash(MonadicJValue.scala:18)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$instantiate(Extraction.scala:451)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:491)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:488)
    at org.json4s.Extraction$.org$json4s$Extraction$$customOrElse(Extraction.scala:500)
    at org.json4s.Extraction$ClassInstanceBuilder.result(Extraction.scala:488)
    at org.json4s.Extraction$.extract(Extraction.scala:332)
    at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:316)
    at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:316)
    at scala.collection.immutable.List.map(List.scala:273)
    at org.json4s.Extraction$.extract(Extraction.scala:316)
    at org.json4s.Extraction$.extract(Extraction.scala:42)
    at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21)
    at com.czechscala.blank.HttpMethods.parseJsonResponse(HttpMethods.scala:87)
    at com.czechscala.blank.HttpMethods.getRequestFunction(HttpMethods.scala:184)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(Hello.scala:68)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply(Hello.scala:64)
    at scala.concurrent.impl.ExecutionContextImpl$DefaultThreadFactory$$anon$2$$anon$4.block(ExecutionContextImpl.scala:48)
    at scala.concurrent.forkjoin.ForkJoinPool.managedBlock(ForkJoinPool.java:3640)
    at scala.concurrent.impl.ExecutionContextImpl$DefaultThreadFactory$$anon$2.blockOn(ExecutionContextImpl.scala:45)
    at scala.concurrent.package$.blocking(package.scala:123)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply$mcV$sp(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply(Hello.scala:64)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
    at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
java.lang.NoSuchMethodError: scala.collection.immutable.$colon$colon.hd$1()Ljava/lang/Object;
    at org.json4s.MonadicJValue.$bslash(MonadicJValue.scala:18)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$14.apply(Extraction.scala:463)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:245)
    at scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
    at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
    at scala.collection.TraversableLike$class.map(TraversableLike.scala:245)
    at scala.collection.AbstractTraversable.map(Traversable.scala:104)
    at org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$instantiate(Extraction.scala:451)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:491)
    at org.json4s.Extraction$ClassInstanceBuilder$$anonfun$result$6.apply(Extraction.scala:488)
    at org.json4s.Extraction$.org$json4s$Extraction$$customOrElse(Extraction.scala:500)
    at org.json4s.Extraction$ClassInstanceBuilder.result(Extraction.scala:488)
    at org.json4s.Extraction$.extract(Extraction.scala:332)
    at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:316)
    at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:316)
    at scala.collection.immutable.List.map(List.scala:273)
    at org.json4s.Extraction$.extract(Extraction.scala:316)
    at org.json4s.Extraction$.extract(Extraction.scala:42)
    at org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21)
    at com.czechscala.blank.HttpMethods.parseJsonResponse(HttpMethods.scala:87)
    at com.czechscala.blank.HttpMethods.getRequestFunction(HttpMethods.scala:184)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(Hello.scala:68)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1$$anonfun$apply$mcV$sp$1.apply(Hello.scala:64)
    at scala.concurrent.impl.ExecutionContextImpl$DefaultThreadFactory$$anon$2$$anon$4.block(ExecutionContextImpl.scala:48)
    at scala.concurrent.forkjoin.ForkJoinPool.managedBlock(ForkJoinPool.java:3640)
    at scala.concurrent.impl.ExecutionContextImpl$DefaultThreadFactory$$anon$2.blockOn(ExecutionContextImpl.scala:45)
    at scala.concurrent.package$.blocking(package.scala:123)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply$mcV$sp(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply(Hello.scala:64)
    at com.czechscala.blank.Hello$$anonfun$sendParallelRequests$1$$anonfun$apply$mcVI$sp$1.apply(Hello.scala:64)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.liftedTree1$1(Future.scala:24)
    at scala.concurrent.impl.Future$PromiseCompletingRunnable.run(Future.scala:24)
    at scala.concurrent.impl.ExecutionContextImpl$AdaptedForkJoinTask.exec(ExecutionContextImpl.scala:121)
    at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:260)
    at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1339)
    at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1979)
    at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:107)
My build.sbt:

name := "blank"

version := "1.0-SNAPSHOT"

scalaVersion := "2.10.2"

libraryDependencies ++= Seq (
    "org.scalatest" % "scalatest_2.10" % "1.9.1" % "test"
)

libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-actor" % "2.1.2"
)

libraryDependencies ++= Seq(
  "net.databinder" %% "dispatch" % "0.8.10"
)

libraryDependencies ++= Seq(
  "org.scala-lang" % "scala-actors" % "2.10.2"
)

libraryDependencies ++= Seq(
  "net.databinder" %% "dispatch-core" % "0.8.10"
)

libraryDependencies ++= Seq(
  "net.databinder" %% "dispatch-futures" % "0.8.10"
)

libraryDependencies ++= Seq(
  "net.databinder" %% "dispatch-nio" % "0.8.10"
)

libraryDependencies ++= Seq(
  "org.slf4j" % "slf4j-api" % "1.6.4",
  "org.slf4j" % "slf4j-simple" % "1.6.4"
)

libraryDependencies ++= Seq(
  "org.json4s" %% "json4s-core" % "3.2.10",
  "org.json4s" %% "json4s-native" % "3.2.10",
  "org.json4s" %% "json4s-jackson" % "3.2.10",
  "net.databinder" %% "unfiltered-netty" % "0.8.0" % "test",
  "net.databinder.dispatch" % "dispatch-json4s-native_2.11" % "0.11.1"
)

libraryDependencies ++= Seq(
  "io.argonaut" %% "argonaut" % "6.0.4"  
)

initialCommands := "import dispatch._"

这个修改过的json对我有用

 val json="""{"1":{"name":"user1", "age":16}}"""
年龄用引号表示,16岁用引号表示。年龄定义为int

当我复制your build.sbt时,似乎有两个相互冲突的版本的json4s相关库正在加载。这里提到的一个版本是

"org.json4s" %% "json4s-core" % "3.2.10",
"org.json4s" %% "json4s-native" % "3.2.10",
"org.json4s" %% "json4s-jackson" % "3.2.10",
这一行提到的另一个版本

"net.databinder.dispatch" ...... "..._2.11", 
这就是scala 2.11版本的json4s

Changing the netbinder version from "_2.11" to "_2.10" seems to be building fine.

我通过更改json进行了检查。但它仍然会产生同样的错误。有什么建议吗?地图的类型是“地图”而不是“地图”。奇怪的代码正在为我工作。让我检查更多。好的,它现在在sbt控制台中工作。但它仍然在我的scala IDEI中显示了相同的错误,我发布了build.sbt。你知道为什么会出现这个问题吗?你能在这里发布你的build.sbt,只是为了验证库引用吗?