I'm trying to leverage json4s for parsing the StructType from Spark.
```
scala> import org.apache.spark.sql.types._


scala> case class Person(name: StructType)
defined class Person


scala> import org.json4s._
import org.json4s._


scala> import org.json4s.jackson.JsonMethods._
import org.json4s.jackson.JsonMethods._


scala> implicit val formats: Formats = DefaultFormats


scala> val json = parse("""  {"name": []} """)


scala> json.extract[Person]


org.json4s.package$MappingException: unknown error
  at org.json4s.Extraction$.extract(Extraction.scala:43)
  at 
org.json4s.ExtractableJsonAstNode.extract(ExtractableJsonAstNode.scala:21)
  ... 55 elided
Caused by: java.util.NoSuchElementException: head of empty list
  at scala.collection.immutable.Nil$.head(List.scala:431)
  at scala.collection.immutable.Nil$.head(List.scala:428)
  at 
org.json4s.Extraction$CollectionBuilder.<init&gt;(Extraction.scala:407)
&nbsp; at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:382)
&nbsp; at org.json4s.Extraction$$anonfun$extract$5.apply(Extraction.scala:382)
&nbsp; at org.json4s.Extraction$.customOrElse(Extraction.scala:606)
&nbsp; at org.json4s.Extraction$.extract(Extraction.scala:382)
&nbsp; at 
org.json4s.Extraction$ClassInstanceBuilder.org$json4s$Extraction$ClassInstanceBuilder$$buildCtorArg(Extraction.scala:514)
&nbsp; at 
org.json4s.Extraction$ClassInstanceBuilder$$anonfun$15.apply(Extraction.scala:546)
&nbsp; at 
org.json4s.Extraction$ClassInstanceBuilder$$anonfun$15.apply(Extraction.scala:546)
&nbsp; at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
&nbsp; at 
scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:234)
&nbsp; at 
scala.collection.mutable.ResizableArray$class.foreach(ResizableArray.scala:59)
&nbsp; at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:48)
&nbsp; at scala.collection.TraversableLike$class.map(TraversableLike.scala:234)
&nbsp; at scala.collection.AbstractTraversable.map(Traversable.scala:104)
&nbsp; at 
org.json4s.Extraction$ClassInstanceBuilder.instantiate(Extraction.scala:546)
&nbsp; at 
org.json4s.Extraction$ClassInstanceBuilder.result(Extraction.scala:597)
&nbsp; at org.json4s.Extraction$$anonfun$extract$6.apply(Extraction.scala:400)
&nbsp; at org.json4s.Extraction$$anonfun$extract$6.apply(Extraction.scala:392)
&nbsp; at org.json4s.Extraction$.customOrElse(Extraction.scala:606)
&nbsp; at org.json4s.Extraction$.extract(Extraction.scala:392)
&nbsp; at org.json4s.Extraction$.extract(Extraction.scala:39)
&nbsp; ... 56 more
```
StructType in Spark is actually a Spark case class with an array as parameter:
```
case class StructType(fields: Array[StructField]) extends DataType with 
Seq[StructField]
```
I just passed an empty list in json, I think that should work. Can any one help 
me fix this problem?

Reply via email to