如何使用Java中的FlexJson Json序列化程序从json字符串中获取List <long>?</long>

时间:2010-04-02 11:34:29

标签: java json flexjson

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

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

3 个答案:

答案 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']”;

  1. 'abc'无法转换为数字。长
  2. JSON字符串中的剧集ID不应该更像:“[777,123,456]”??