Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用addAll合并两个JSONArray_Json_Scala - Fatal编程技术网

如何用addAll合并两个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

各位,我用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) 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 
}