2013-10-03 65 views
3

裏面我有JSON這樣的:我如何反序列化陣列陣列谷歌,GSON

{ 
"Answers": 
[ 
    [ 
    {"Locale":"Ru","Name":"Name1"}, 
    {"Locale":"En","Name":"Name2"} 
    ], 
    [ 
    {"Locale":"Ru","Name":"Name3"}, 
    {"Locale":"En","Name":"Name4"} 
    ] 
] 
} 

正如你所看到的,我有數組的數組裏面。我怎樣才能將這樣的JSON結構反序列化爲一個對象使用google-gson Android上的庫(https://code.google.com/p/google-gson/)?

+0

請閱讀'gson'標籤wiki。不需要'google-gson'。 – Charles

回答

3

JSON格式之後,我們得到了這樣的事情:

爲MyObject

public class MyObject { 
public List<List<Part>> Answers; 

public List<List<Part>> getAnswers() { 
    return Answers; 
    } 
} 

部分

public class Part { 
private String Locale; 
private String Name; 

public String getLocale() { 
    return Locale; 
} 
public String getName() { 
    return Name; 
} 

} 

主要

public static void main(String[] args) { 
    String str = " {" + 
      "  \"Answers\": [[{" + 
      "   \"Locale\": \"Ru\"," + 
      "   \"Name\": \"Name1\"" + 
      "  }," + 
      "  {" + 
      "   \"Locale\": \"En\"," + 
      "   \"Name\": \"Name2\"" + 
      "  }]," + 
      "  [{" + 
      "   \"Locale\": \"Ru\"," + 
      "   \"Name\": \"Name3\"" + 
      "  }," + 
      "  {" + 
      "   \"Locale\": \"En\"," + 
      "   \"Name\": \"Name4\"" + 
      "  }]]" + 
      " }"; 

    Gson gson = new Gson(); 

    MyObject obj = gson.fromJson(str, MyObject.class); 

    List<List<Part>> answers = obj.getAnswers(); 

    for(List<Part> parts : answers){ 
     for(Part part : parts){ 
      System.out.println("locale: " + part.getLocale() + "; name: " + part.getName()); 
     } 
    } 

} 

輸出:

locale: Ru; name: Name1 
locale: En; name: Name2 
locale: Ru; name: Name3 
locale: En; name: Name4 
+1

也許你是對的。讓我測試它。 – Andrei

1

使用此

public class MyObject extends ArrayList<ArrayList<Part>> 
{ 
    public List<Part> Answers 
} 

利用給定的代碼

List<Part> Answers = Arrays.asList(gson.fromJson(json, MyObject.class)); 

希望也可以使用這個反序列化,這將幫助你..