-1

To transfer data from a server to client i'm using GSON, actually i'm able to get the JSON String but getting error while deserialising. If someone could help me i'll be thankfull...

JSON String

{ "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
}

Target class:

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;}

I got this error:

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

I think that the probleme is coming from the "List>", can someone tell me how can I deserialise this ?

[{"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 Answers2

1

I see one glaring problem and a few other potential miscellaneous issues:

  1. You can't so easily deserialize generic types. You have to work a little harder to deserialize them, click this link. In particular, I'm referring to List<LinkedHashMap<Position, Character>>

Here are the other potential issues:

  1. You don't tell us what the Position class is, it may not match up
  2. There is no entry for players in the Json string
Community
  • 1
  • 1
durron597
  • 31,968
  • 17
  • 99
  • 158
0

You can try with

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

instead of

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

In the string "2H:\"null\"" : "R", it treats 2H:"null" as key and R as value of the map.

Braj
  • 46,415
  • 5
  • 60
  • 76