0
String episodeIds = "['abc', '123', '456']";
     List<Long> list = new JSONDeserializer<ArrayList<Long>>().use(null, ArrayList.class).deserialize(episodeIds);
     System.out.println(list);

此代码返回字符串,但必须返回 LONG)

4

3 回答 3

1

我认为您不需要.use(null, ArrayList.class)第二行的部分:

String episodeIds = "['abc', '123', '456']";
 List<Long> list = new JSONDeserializer<ArrayList<Long>>().deserialize(episodeIds);
 System.out.println(list);

问候,

于 2010-04-02T11:47:41.387 回答
0

如果不更好地了解 FlexJSON,我无法确定,但我怀疑问题是由于 Java 类型擦除(如果您不熟悉这个概念,请在谷歌上找到更多信息——这只是意味着 Java 字节码的声明信息非常少)泛型类型,就像你在这里所做的那样)。因此,库不能知道您给出的预期类型(>,或隐含的返回类型);它看到的只是 ArrayList(因为 ArrayList.class 没有泛型类型信息);并且由于您使用字符串给它 JSON,它必须假设您想要字符串列表。

那么如何解决这个问题呢?也许 FlexJson 有办法提供支持泛型的信息来解决这个问题。如果没有,您可以将 ArrayList 子类化,例如“public class MyList extends ArrayList”,将 MyList.class 传递给方法。现在它应该能够确定实际预期的类型。

或者,如果这不起作用,请尝试另一个 Java JSON 库(Jackson 或 GS​​ON)。他们可以进行这种转换(我知道杰克逊可以,我希望 GSON 也可以)。

于 2010-04-09T18:05:49.380 回答
0

String episodeIds = "['abc', '123', '456']";

  1. 'abc' 不能分别转换为数字。长
  2. JSON字符串中的情节ID不应该更像:“[777,123,456]”?
于 2010-07-01T11:13:37.713 回答