2011-06-28 6 views
0

私はこのトピックを2日間困惑し、必要なものを見つけることができないようです。カスタムデシリアライザGSON


次のように私はクラスを持っている:

public class myClass { 

private String name; 
private ArrayList<String> arr1; 
private ArrayList<String> arr2; 
} 

私は後でさらなる処理のためのMyClassの配列リストを記入する必要がJSPファイルにjQueryのAJAX経由でJSONを掲載しています。

JSONは次のようになります。

[{"name":"myName","arr1":["foo","bar","blahh"],"arr2":["foo","bar","blahh"]}, 
{"name":"myName2","arr1":["foo","bar","blahh"],"arr2":["foo","bar","blahh"]}] 

私は、カスタムデシリアライザを作ってみましたが、私の試みのすべてが無駄にされています。助けることができる誰にでも

 json = request.getParameter("myStuff"); 
    Gson gson = new Gson(); 
Type listType = new TypeToken<ArrayList<myClass>>() {}.getType(); 
ArrayList<myClass> myClassList= new Gson().fromJson(json, listType); 

ありがとう:
これは私の現在の関数です。

更新:申し訳ありませんが、私は尋ねていることを明確に述べることを忘れました。

関連する2つの質問があります。

1.デシリアライザを使用する必要がありますか?
2.はいの場合、私が今持っているものは何ですか?

答えて

1

あなたが投稿したコードとJSONは、私のためにカスタム直列化を行わずに、私が期待したようにシリアライズしてデシリアライズします。私は何か間違っているとは思わない。

import java.io.FileReader; 
import java.lang.reflect.Type; 
import java.util.ArrayList; 

import com.google.gson.Gson; 
import com.google.gson.reflect.TypeToken; 

public class Foo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    Type listType = new TypeToken<ArrayList<myClass>>() {}.getType(); 
    Gson gson = new Gson(); 
    ArrayList<myClass> myClassList= new Gson().fromJson(new FileReader("input.json"), listType); 
    System.out.println(gson.toJson(myClassList)); 
    } 
} 

class myClass 
{ 
    private String name; 
    private ArrayList<String> arr1; 
    private ArrayList<String> arr2; 
} 

これは達成しようとしているものではありませんか? jsonの値がrequest.getParameter("myStuff")から届いているとお考えですか?

+0

ありがとうございました。私はjava.lang.reflect.Typeを忘れていたと思いますが、再入力したのでわかりません。それは今働く。 – richsoni