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