Scala 将java.util.ArrayList[String]转换为json数组字符串
我正在尝试使用json4s库()将字符串列表转换为json数组列表: 导致错误的原因:Scala 将java.util.ArrayList[String]转换为json数组字符串,scala,json4s,Scala,Json4s,我正在尝试使用json4s库()将字符串列表转换为json数组列表: 导致错误的原因: l.toList导致编译器错误: type mismatch; found : List[String] required: org.json4s.JValue (which expands to) org.json4s.JsonAST.JValue 数组的每个元素都需要转换为JValue吗?是否有将scala列表[字符串]转换为json数组的标准方法?Json4s需要一个org.Json4s.Forma
l.toList
导致编译器错误:
type mismatch; found : List[String] required: org.json4s.JValue (which expands to) org.json4s.JsonAST.JValue
数组的每个元素都需要转换为JValue吗?是否有将scala列表[字符串]转换为json数组的标准方法?Json4s需要一个
org.Json4s.Formats
的实例在范围内,以便将scala类型(如案例类和本机集合)转换(序列化)为json
以下是我对您的转换器代码的看法:
object Convert {
import scala.collection.JavaConverters._ // I prefer this to JavaConversions
import org.json4s._
import org.json4s.native.Serialization._ // provides write()
implicit val formats = org.json4s.DefaultFormats
val l = new java.util.ArrayList[String]()
l.add("1")
l.add("1")
l.add("1")
val asJsonString = write(l.asScala)
println(compact(parse(asJsonString)))
}
注:
- 比起Java转换,我更喜欢Java转换器。它为集合提供了一个隐式定义的
方法,使得在代码中发生Java2Scala转换时更加透明asScala
- 考虑到Jackson的人气和广泛的测试,我还建议使用Jackson而不是Native
object Convert {
import scala.collection.JavaConverters._ // I prefer this to JavaConversions
import org.json4s._
import org.json4s.native.Serialization._ // provides write()
implicit val formats = org.json4s.DefaultFormats
val l = new java.util.ArrayList[String]()
l.add("1")
l.add("1")
l.add("1")
val asJsonString = write(l.asScala)
println(compact(parse(asJsonString)))
}