4

この方法を使用したい:

json.add("myText", getList(id));

関数getList(id)は配列リストを返しますが、メソッドjson.addはJsonElementを必要とします。

では、どうすればJsonElementで配列リストをキャストできますか?

私はこれをテストしますが、機能しません:

json.add("myText", (JsonElement)getList(id));

私もこれをテストします:

JsonElement jelement = new JsonElement(){

 private ArrayList<String> list= new ArrayList<String>();

 public ArrayList<String> getList(){ 
     return this.list;
 } 

};

4

4 に答える 4

4

com.google.gson には、ArrayList (または任意のコレクション) をシリアル化するためのメソッドがあります。シリアル化したら、JSONParser を使用して文字列を解析できます。

JSONParser.parse(gson.toJson(getList(id)));

参照: https://sites.google.com/site/gson/gson-user-guide#TOC-Array-Examples

于 2012-12-18T15:05:16.173 に答える
0

あなたはそれをキャストすることができず、APIメソッドでそれを変換する方法を私は見ることができません。リストを配列に変換するには、独自のメソッドを作成する必要があると思います。

例えば

private JsonElement convertToJsonElement(List<Object> list)

次に、次のように呼び出します。

json.add("myText", convertToJsonElement(getList(id)));

または、getListメソッドにアクセスできる場合は、これを変更してJsonElementを返すことができます。

于 2012-12-18T14:13:23.290 に答える
0

一歩下がって、あなたがやろうとしていることを理解する必要があると思います。

「myText」と他のオブジェクトの配列との間にマッピングを作成したいとします。

これを行うには、Gson.toJson(map)を呼び出す必要があります。ここで、mapはキーmyTextと値をリストまたは配列として保持します。言い換えると:

Map<String, List<Object>> mapJson = new LinkedHashMap<String, List<Object>>();
mapJson.put("myText", getList(id));

String outputJson = Gson.toJson(mapJson);

これがあなたが探しているものではない場合、私はあなたがあなたが望む方法ではなく、Gsonがサポートする方法であなたがそれを行うのを助けることができるようにあなたの目的を説明することをあなたに勧めます。

于 2012-12-18T15:03:05.390 に答える