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)2行目の部分は必要ないと思います:

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

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

  1. 「abc」は数値に変換できません。長いです
  2. JSON 文字列のエピソード ID は、"[ 777, 123, 456 ]" のようにすべきではありませんか??
于 2010-07-01T11:13:37.713 に答える
0

FlexJSON をよく知らなければ確信が持てませんが、問題は Java Type Erasure によるものと思われます (概念に慣れていない場合は、Google でさらに詳しく調べてください。これは、Java バイトコードが宣言された情報をほとんど持っていないことを意味します)。ここで行うようなジェネリック型)。このため、ライブラリは、指定した型 (>、または暗黙の戻り値の型) を認識できません。表示されるのは ArrayList だけです (ArrayList.class にはジェネリック型情報がないため)。また、文字列を含む JSON を指定しているため、文字列のリストが必要であると想定する必要があります。

では、これを回避するにはどうすればよいでしょうか。おそらく、FlexJson には、これを回避するためのジェネリック対応情報を提供する方法があります。そうでない場合は、「public class MyList extends ArrayList」のように ArrayList をサブクラス化し、MyList.class をメソッドに渡すことができます。これで、実際に期待されるタイプを決定できるようになる必要があります。

または、それが機能しない場合は、別の Java JSON ライブラリ (Jackson または GSON) を試してください。彼らはこの変換を行うことができます (Jackson ができることは知っていますが、GSON もできると思います)。

于 2010-04-09T18:05:49.380 に答える