2014-05-22 130 views
-1

要將數據從服務器傳輸到客戶端,我使用GSON,實際上我能夠獲得JSON字符串,但在反序列化時出現錯誤。如果有人能幫助我,我應該心存感激......無法使用GSON反序列化複雜的JSON對象

JSON字符串

{ "id" : 0, 
    "maxPlayers" : 0, 
    "racks" : [ "EIORSSU", 
     "CEKOPRV", 
     "PVEELV?", 
     "VAAEIR?", 
     "BDENOTT", 
     "DNEEIIO", 
     "EEIOBLU", 
     "EODFLST", 
     "DSTAAEL", 
     "EEIMNOS", 
     "GINRRSU", 
     "AEENTWX", 
     "EENTIQU", 
     "ADEGHJT", 
     "GHCEGMU", 
     "GGMAINP", 
     "AGPFRTU", 
     "FGANORY", 
     "FGNORLM", 
     "GLMNHIS", 
     "HLMNANZ", 
     "AHLMN", 
     "ALM", 
     "L" 
    ], 
    "strokes" : [ { "2H:\"null\"" : "R", 
     "3H:\"null\"" : "O", 
     "4H:\"null\"" : "U", 
     "5H:\"null\"" : "I", 
     "6H:\"null\"" : "S", 
     "7H:\"null\"" : "S", 
     "8H:\"null\"" : "E" 
     }, 
     { "2C:\"null\"" : "R", 
     "2D:\"null\"" : "O", 
     "2E:\"null\"" : "C", 
     "2F:\"null\"" : "K", 
     "2G:\"null\"" : "E", 
     "2H:\"null\"" : "R" 
     }, 
     { "4G:\"null\"" : "P", 
     "5G:\"null\"" : "L", 
     "6G:\"null\"" : "E", 
     "7G:\"null\"" : "u", 
     "8G:\"null\"" : "V", 
     "9G:\"null\"" : "E" 
     }, 
     { "10F:\"null\"" : "E", 
     "11F:\"null\"" : "R", 
     "12F:\"null\"" : "A", 
     "13F:\"null\"" : "I", 
     "7F:\"null\"" : "l", 
     "8F:\"null\"" : "A", 
     "9F:\"null\"" : "V" 
     }, 
     { "14D:\"null\"" : "B", 
     "14E:\"null\"" : "O", 
     "14F:\"null\"" : "T", 
     "14G:\"null\"" : "T", 
     "14H:\"null\"" : "E" 
     }, 
     { "10E:\"null\"" : "D", 
     "8E:\"null\"" : "N", 
     "9E:\"null\"" : "I" 
     }, 
     { "3A:\"null\"" : "B", 
     "3B:\"null\"" : "L", 
     "3C:\"null\"" : "E", 
     "3D:\"null\"" : "U", 
     "3E:\"null\"" : "I" 
     }, 
     { "10D:\"null\"" : "O", 
     "11D:\"null\"" : "F", 
     "12D:\"null\"" : "E", 
     "9D:\"null\"" : "L" 
     }, 
     { "13H:\"null\"" : "D", 
     "13I:\"null\"" : "E", 
     "13J:\"null\"" : "T", 
     "13K:\"null\"" : "A", 
     "13L:\"null\"" : "L", 
     "13M:\"null\"" : "A", 
     "13N:\"null\"" : "S" 
     }, 
     { "10L:\"null\"" : "I", 
     "11L:\"null\"" : "N", 
     "12L:\"null\"" : "O", 
     "13L:\"null\"" : "L", 
     "14L:\"null\"" : "E", 
     "7L:\"null\"" : "S", 
     "8L:\"null\"" : "E", 
     "9L:\"null\"" : "M" 
     }, 
     { "2I:\"null\"" : "S", 
     "3I:\"null\"" : "U", 
     "4I:\"null\"" : "R" 
     }, 
     { "6M:\"null\"" : "W", 
     "7M:\"null\"" : "A", 
     "8M:\"null\"" : "X" 
     }, 
     { "10H:\"null\"" : "I", 
     "10I:\"null\"" : "N", 
     "10J:\"null\"" : "Q", 
     "10K:\"null\"" : "U", 
     "10L:\"null\"" : "I", 
     "10M:\"null\"" : "E", 
     "10N:\"null\"" : "T", 
     "10O:\"null\"" : "E" 
     }, 
     { "10O:\"null\"" : "E", 
     "11O:\"null\"" : "T", 
     "12O:\"null\"" : "A", 
     "7O:\"null\"" : "D", 
     "8O:\"null\"" : "E", 
     "9O:\"null\"" : "J" 
     }, 
     { "3A:\"null\"" : "B", 
     "4A:\"null\"" : "U", 
     "5A:\"null\"" : "C", 
     "6A:\"null\"" : "H", 
     "7A:\"null\"" : "E" 
     }, 
     { "10C:\"null\"" : "M", 
     "11C:\"null\"" : "I", 
     "12C:\"null\"" : "N", 
     "13C:\"null\"" : "G" 
     }, 
     { "4K:\"null\"" : "P", 
     "5K:\"null\"" : "A", 
     "6K:\"null\"" : "R", 
     "7K:\"null\"" : "U", 
     "8K:\"null\"" : "T" 
     }, 
     { "11G:\"null\"" : "A", 
     "12G:\"null\"" : "Y" 
     }, 
     { "5J:\"null\"" : "F", 
     "6J:\"null\"" : "O", 
     "7J:\"null\"" : "R" 
     }, 
     { "4C:\"null\"" : "G", 
     "4D:\"null\"" : "I", 
     "4E:\"null\"" : "S" 
     }, 
     { "12I:\"null\"" : "N", 
     "13I:\"null\"" : "E", 
     "14I:\"null\"" : "Z" 
     }, 
     { "12M:\"null\"" : "H", 
     "13M:\"null\"" : "A", 
     "14M:\"null\"" : "N" 
     }, 
     { "1B:\"null\"" : "M", 
     "1C:\"null\"" : "A" 
     } 
    ], 
    "timeout" : 0 
} 

目標類:

Class Game { 
     private int id; 
    private String name; 
    private int timeout; 
    private int maxPlayers; 
    private List<String> racks; 
    private List<LinkedHashMap<Position, Character>> strokes; 
    private List<Player> players;} 

我得到這個錯誤:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 287 at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:186) at com.google.gson.internal.bind.MapTypeAdapterFactory$Adapter.read(MapTypeAdapterFactory.java:145) at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:81) at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:60) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.read(ReflectiveTypeAdapterFactory.java:93) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:172) at com.google.gson.Gson.fromJson(Gson.java:803) at com.google.gson.Gson.fromJson(Gson.java:768) at com.google.gson.Gson.fromJson(Gson.java:717) at com.google.gson.Gson.fromJson(Gson.java:689) at fr.univtln.groupec.dupliword_server.main.Serveur.main(Serveur.java:87) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 287 at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165) ... 19 more

我想問題來自「List>」,有人可以告訴我如何反序列化這個?

[{"2H:\"null\"":"R","3H:\"null\"":"O","4H:\"null\"":"U","5H:\"null\"":"I","6H:\"null\"":"S","7H:\"null\"":"S","8H:\"null\"":"E"},{"2C:\"null\"":"R","2D:\"null\"":"O","2E:\"null\"":"C","2F:\"null\"":"K","2G:\"null\"":"E","2H:\"null\"":"R"},{"4G:\"null\"":"P","5G:\"null\"":"L","6G:\"null\"":"E","7G:\"null\"":"u","8G:\"null\"":"V","9G:\"null\"":"E"},{"7F:\"null\"":"l","8F:\"null\"":"A","9F:\"null\"":"V","10F:\"null\"":"E","11F:\"null\"":"R","12F:\"null\"":"A","13F:\"null\"":"I"},{"14D:\"null\"":"B","14E:\"null\"":"O","14F:\"null\"":"T","14G:\"null\"":"T","14H:\"null\"":"E"},{"8E:\"null\"":"N","9E:\"null\"":"I","10E:\"null\"":"D"},{"3A:\"null\"":"B","3B:\"null\"":"L","3C:\"null\"":"E","3D:\"null\"":"U","3E:\"null\"":"I"},{"9D:\"null\"":"L","10D:\"null\"":"O","11D:\"null\"":"F","12D:\"null\"":"E"},{"13H:\"null\"":"D","13I:\"null\"":"E","13J:\"null\"":"T","13K:\"null\"":"A","13L:\"null\"":"L","13M:\"null\"":"A","13N:\"null\"":"S"},{"7L:\"null\"":"S","8L:\"null\"":"E","9L:\"null\"":"M","10L:\"null\"":"I","11L:\"null\"":"N","12L:\"null\"":"O","13L:\"null\"":"L","14L:\"null\"":"E"},{"2I:\"null\"":"S","3I:\"null\"":"U","4I:\"null\"":"R"},{"6M:\"null\"":"W","7M:\"null\"":"A","8M:\"null\"":"X"},{"10H:\"null\"":"I","10I:\"null\"":"N","10J:\"null\"":"Q","10K:\"null\"":"U","10L:\"null\"":"I","10M:\"null\"":"E","10N:\"null\"":"T","10O:\"null\"":"E"},{"7O:\"null\"":"D","8O:\"null\"":"E","9O:\"null\"":"J","10O:\"null\"":"E","11O:\"null\"":"T","12O:\"null\"":"A"},{"3A:\"null\"":"B","4A:\"null\"":"U","5A:\"null\"":"C","6A:\"null\"":"H","7A:\"null\"":"E"},{"10C:\"null\"":"M","11C:\"null\"":"I","12C:\"null\"":"N","13C:\"null\"":"G"},{"4K:\"null\"":"P","5K:\"null\"":"A","6K:\"null\"":"R","7K:\"null\"":"U","8K:\"null\"":"T"},{"11G:\"null\"":"A","12G:\"null\"":"Y"},{"5J:\"null\"":"F","6J:\"null\"":"O","7J:\"null\"":"R"},{"4C:\"null\"":"G","4D:\"null\"":"I","4E:\"null\"":"S"},{"12I:\"null\"":"N","13I:\"null\"":"E","14I:\"null\"":"Z"},{"12M:\"null\"":"H","13M:\"null\"":"A","14M:\"null\"":"N"},{"1B:\"null\"":"M","1C:\"null\"":"A"}]

+2

你得到什麼錯誤? [你有什麼嘗試](http://whathaveyoutried.com)? – David

+0

JSON數據是有效的,如果有人想知道 –

+0

我認爲類成員必須以與JSON數據相同的順序指定。 – rrirower

回答

0

您可以

private List<LinkedHashMap<String, Character>> strokes; 

,而不是

private List<LinkedHashMap<Position, Character>> strokes; 

嘗試

在字符串"2H:\"null\"" : "R"中,它將2H:"null"作爲鍵和R作爲地圖的值。