String episodeIds = "['abc', '123', '456']";
List<Long> list = new JSONDeserializer<ArrayList<Long>>().use(null, ArrayList.class).deserialize(episodeIds);
System.out.println(list);
此代码返回字符串,但必须返回LONG)
答案 0 :(得分:1)
我认为您不需要第二行的.use(null, ArrayList.class)
部分:
String episodeIds = "['abc', '123', '456']";
List<Long> list = new JSONDeserializer<ArrayList<Long>>().deserialize(episodeIds);
System.out.println(list);
此致
答案 1 :(得分:0)
我不能确定更好地了解FlexJSON,但我怀疑是由于Java Type Erasure(如果你不熟悉这个概念那么谷歌更多 - 这只是意味着Java字节代码很少声明的泛型类型的信息,就像你在这里做的那样)。 因此,库不能知道您给出的预期类型(&gt;,或隐含的返回类型);所有它看到的是ArrayList(因为ArrayList.class没有泛型类型信息);既然你用字符串给它JSON,它必须假设你想要字符串列表。
那么如何解决这个问题呢?也许FlexJson有办法给出支持泛型的信息来解决这个问题。如果没有,你可以将ArrayList子类化,类似'public class MyList extends ArrayList',将MyList.class传递给方法。现在它应该能够确定实际预期的类型。
如果这不起作用,请尝试另一个Java JSON库(Jackson或GSON)。他们可以进行这种转换(我知道杰克逊可以,我希望GSON能够做到这一点)。
答案 2 :(得分:0)
String episodeIds =“['abc','123','456']”;