如何用addAll合并两个JSONArray
各位,我用java中的这段代码合并了两个org.json.simple.JSONArray,它工作得非常好:如何用addAll合并两个JSONArray,json,scala,Json,Scala,各位,我用java中的这段代码合并了两个org.json.simple.JSONArray,它工作得非常好: import java.io.IOException; import org.json.simple.JSONArray; public class MergeJsonArrays { /** * @param args * @throws IOException */ public static void main(String[] args) thr
import java.io.IOException;
import org.json.simple.JSONArray;
public class MergeJsonArrays {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
JSONArray jsonArray = new JSONArray();
jsonArray.add("one");
jsonArray.add("two");
jsonArray.add("three");
JSONArray jsonArray2 = new JSONArray();
jsonArray2.add("three");
jsonArray2.add("four");
jsonArray.addAll(jsonArray2);
System.out.println(jsonArray);
}
}
我想在scala中转置此代码,使其如下所示:
import org.json.simple.JSONArray
/**
* Created by Administrator on 03/01/2018.
*/
object Main {
def main(args: Array[String]): Unit = {
var jsonArray = new JSONArray
jsonArray.add("one");
jsonArray.add("two")
jsonArray.add("three")
var jsonArray2 = new JSONArray()
jsonArray2.add("three")
jsonArray2.add("four")
jsonArray.addAll(jsonArray2)
}
}
def main(args: Array[String]): Unit = {
val jsonArray1 = new JSONArray()
val javaArrayList1: ArrayList[Any] = jsonArray1.asInstanceOf[ArrayList[Any]]
javaArrayList1.add("one")
javaArrayList1.add("two")
javaArrayList1.add("three")
val jsonArray2 = new JSONArray()
val javaArrayList2: ArrayList[Any] = jsonArray2.asInstanceOf[ArrayList[Any]]
javaArrayList2.add("three")
javaArrayList2.add("four")
javaArrayList1.addAll(javaArrayList2)
// and then use JSON-specifc methods via jsonArray1
}
我在“添加”的行中遇到错误:
错误:(13,15)重载的方法值与可选项相加:(x$1:
E) Boolean(x$1:java.util._1)Boolean(x$1:(一些
其他)java.util.\u 1)布尔值不能应用于(字符串)
jsonArray.add(“三”)
并与addAll保持一致:
错误:(19,15)重载的方法值addAll和可选项:
(x$1:java.util.Collection[\up>如果您使用,我的第一个建议是停止使用它。它非常旧,可能早于java泛型。它已经多年没有更新了。有许多现代的和受支持的,也有很多。请看一看,然后选择一个
如果出于某种神秘的原因,你不得不在Scala中使用这个古老的库,你将需要一些技巧。问题是Scala被设计成比Java更安全的类型,因此在根本没有指定泛型类型的情况下,它就不能很好地工作。这正是它发生的情况
看看它是如何ArrayList
而不是ArrayList
或ArrayList
之类的东西。我知道在Scala中解决这个问题的唯一方法是执行如下显式强制转换:
import org.json.simple.JSONArray
/**
* Created by Administrator on 03/01/2018.
*/
object Main {
def main(args: Array[String]): Unit = {
var jsonArray = new JSONArray
jsonArray.add("one");
jsonArray.add("two")
jsonArray.add("three")
var jsonArray2 = new JSONArray()
jsonArray2.add("three")
jsonArray2.add("four")
jsonArray.addAll(jsonArray2)
}
}
def main(args: Array[String]): Unit = {
val jsonArray1 = new JSONArray()
val javaArrayList1: ArrayList[Any] = jsonArray1.asInstanceOf[ArrayList[Any]]
javaArrayList1.add("one")
javaArrayList1.add("two")
javaArrayList1.add("three")
val jsonArray2 = new JSONArray()
val javaArrayList2: ArrayList[Any] = jsonArray2.asInstanceOf[ArrayList[Any]]
javaArrayList2.add("three")
javaArrayList2.add("four")
javaArrayList1.addAll(javaArrayList2)
// and then use JSON-specifc methods via jsonArray1
}