scala gson 数组元素到 scala ArrayList[Int]
scala gson array elements to scala ArrayList[Int]
我在 java、gson、scala 之间来回转换时遇到问题。我应该怎么做。
我的 objective 应该如何以功能方式收集 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.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
和嵌套字段 array
进行模糊构造,您可以使用转换类型和 map
函数进行直接转换:
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 的集合,只需创建一个迭代器 returns getAsInt
并通过 Guava
:[=21 将其转换为 ArrayList
=]
import com.google.common.collect.Lists;
Iterator<Integer> ints = ....
List<Integer> myList = Lists.newArrayList(ints);
或同ArrayClass
Iterator<ArrayClass> ints = ....
List<Integer> myList = Lists.newArrayList(ints).stream.map(p -> p.getAsInt).collect(Collectors.toList());
结果,您将获得整数列表,选择权在您。
我在 java、gson、scala 之间来回转换时遇到问题。我应该怎么做。
我的 objective 应该如何以功能方式收集 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.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
和嵌套字段 array
进行模糊构造,您可以使用转换类型和 map
函数进行直接转换:
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 的集合,只需创建一个迭代器 returns getAsInt
并通过 Guava
:[=21 将其转换为 ArrayList
=]
import com.google.common.collect.Lists;
Iterator<Integer> ints = ....
List<Integer> myList = Lists.newArrayList(ints);
或同ArrayClass
Iterator<ArrayClass> ints = ....
List<Integer> myList = Lists.newArrayList(ints).stream.map(p -> p.getAsInt).collect(Collectors.toList());
结果,您将获得整数列表,选择权在您。