每个人,我在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)
}
}
我在添加的行中出现错误:
错误:(13,15)重载方法值add with alternatives:(x $ 1: E)布尔值(x $ 1:java.util._1)布尔值(x $ 1 :(有些 其他)java.util._1)布尔值不能应用于(String) jsonArray.add("三&#34)
并与addAll:
一致你知道吗?错误:(19,15)重载方法值addAll与备选方案: (x $ 1:java.util.Collection [_<:E])布尔值 (x $ 1:java.util.Collection [_<:java.util。 1])布尔值 (x $ 1:java.util.Collection [< :(其他一些)java.util._1])布尔值 无法应用于(org.json.simple.JSONArray) jsonArray.addAll(jsonArray2)
答案 0 :(得分:1)
如果您使用this library,我的第一个建议是停止这样做。它很老,可能早于Java泛型。它多年没有更新。 Java中有许多现代且受支持的libraries libraries以及written Scala。看看,选择一个。
如果由于一些神秘的原因你必须在Scala中使用那个古老的库,你将需要一些黑客攻击。问题是Scala被设计为比Java更安全,因此当根本没有指定泛型类型时它不能很好地工作。这正是JSONArray
org.eclipse.jetty.websocket:javax-websocket-server-impl
了解它仅仅是public class JSONArray extends ArrayList implements JSONAware, JSONStreamAware {
而不是ArrayList
或ArrayList<String>
或类似的东西。在Scala中解决这个问题的唯一方法就是执行这样的显式转换:
ArrayList<Object>