2012-04-05 15 views
7

私の文字列は次のとおりです。GSONは、名前/値のペアの配列をdeserialiseする

"[{"property":"surname","direction":"ASC"}]" 

が、私はそれをラップ/それに追加することなく、GSONはこれをdeserialiseために得ることができますか? 基本的に、名前と値のペアの配列を逆シリアル化する必要があります。 私はいくつかのアプローチを試みましたが、無駄です。あなたは基本的に地図のリストとしてそれを表現したい

+1

[何を試してみましたか?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

コレクションタイプを定義しようとしました。たとえば、コレクションタイプ=新しいタイプトークン<コレクション>(){}。getType();また、このアプローチhttp://stackoverflow.com/questions/9853017/parsing-json-array-with-gson – Black

+0

解決方法は、並べ替えのカスタムタイプの配列として、deserialiseすることです: public class Sort { プライベートStringプロパティ。 プライベート文字列の方向。 } Sort []ソート= gson.fromJson(sortJson、Sort []。class); – Black

答えて

12

public static void main(String[] args) 
{ 
    String json = "[{\"property\":\"surname\",\"direction\":\"ASC\"}]"; 

    Type listType = new TypeToken<ArrayList<HashMap<String,String>>>(){}.getType(); 

    Gson gson = new Gson(); 

    ArrayList<Map<String,String>> myList = gson.fromJson(json, listType); 

    for (Map<String,String> m : myList) 
    { 
     System.out.println(m.get("property")); 
    } 
} 

出力:

あなたの配列内のオブジェクトは、キーの既知のセットが含まれている場合/ POJOを作成してそれにマップすることができます。

public class App 
{ 
    public static void main(String[] args) 
    { 
     String json = "[{\"property\":\"surname\",\"direction\":\"ASC\"}]"; 
     Type listType = new TypeToken<ArrayList<Pair>>(){}.getType(); 
     Gson gson = new Gson(); 
     ArrayList<Pair> myList = gson.fromJson(json, listType); 

     for (Pair p : myList) 
     { 
      System.out.println(p.getProperty()); 
     } 
    } 
} 

class Pair 
{ 
    private String property; 
    private String direction; 

    public String getProperty() 
    { 
     return property; 
    }  
} 
関連する問題