scala gson数组元素到scala ArrayList[Int]
我面临在java、gson和scala之间来回转换的问题。我该怎么做呢 我的目标是收集jsonArray的所有数组元素,并将其填充到ArrayClass数组中scala gson数组元素到scala ArrayList[Int],scala,gson,scala-java-interop,Scala,Gson,Scala Java Interop,我面临在java、gson和scala之间来回转换的问题。我该怎么做呢 我的目标是收集jsonArray的所有数组元素,并将其填充到ArrayClass数组中 import java.lang.reflect.Type import java.util.ArrayList import com.google.gson.JsonDeserializationContext import com.google.gson.JsonDeserializer import com.google.gson
import java.lang.reflect.Type
import java.util.ArrayList
import com.google.gson.JsonDeserializationContext
import com.google.gson.JsonDeserializer
import com.google.gson.JsonElement
import scala.collection.JavaConversions._
class ArrayClass {
var array = new ArrayList[Int]
}
class ArrayClassDeserializer extends JsonDeserializer[ArrayClass] {
def deserialize(json: JsonElement, typeOfT: Type, context: JsonDeserializationContext): ArrayClass = {
val jsonObject = json.getAsJsonObject
val jsonArray = jsonObject.get("array").getAsJsonArray
val arrayClass = new ArrayClass
val arraylist = new ArrayList[JsonElement]()
**jsonArray.iterator().foreach(e => arrayClass.array.add(e.getAsInt))**
}
您不需要使用ArrayClass和嵌套字段数组进行模糊构造,您可以使用转换后的类型和映射函数进行直接转换:
import scala.collection.JavaConversions._
val javaList = new java.util.ArrayList[Int]()
val result = javaList.iterator.toList.map(_.getAsInt)
如果不需要ArrayList作为临时结果持有者,只需将其转换为正确的类型:
val ints = javaList.iterator
.asInstanceOf[java.util.Iterator[Int]]
.toList.map(_.getAsInt)
如果您不想处理Scala的集合,只需制作一个迭代器,返回getAsInt并通过Guava将其转换为ArrayList:
或者和ArrayClass一样
Iterator<ArrayClass> ints = ....
List<Integer> myList = Lists.newArrayList(ints).stream.map(p -> p.getAsInt).collect(Collectors.toList());
结果,您将获得整数列表,选择权归您
Iterator<ArrayClass> ints = ....
List<Integer> myList = Lists.newArrayList(ints).stream.map(p -> p.getAsInt).collect(Collectors.toList());