简体   繁体   English

无法使用 GSON 反序列化复杂的 JSON 对象

[英]Unable to deserialize a complex JSON object using GSON

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.要将数据从服务器传输到客户端,我使用 GSON,实际上我能够获取 JSON 字符串,但在反序列化时出错。 If someone could help me i'll be thankfull...如果有人可以帮助我,我将不胜感激...

JSON String 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
}

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.goog com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在 com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176) 的第 1 行第 287 列是 STRING。 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) 在 com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.read(TypeAdapterRuntimeTypeWrapper.java:40) 在 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) 在 com.goog le.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$Ada le.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) 在 com.google.gson.Gson.fromJson(Gson.java:717) 在 com.google.gson.Gson.fromJson(Gson.java:689) 在 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:4) ) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:293) 在 java.lang.Thread.run(Thread.java :745) 引起:java.lang.IllegalStateException:预期为 BEGIN_OBJECT,但在 com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374) 的第 1 行第 287 列处为 STRING。 bind.ReflectiveTypeAdapterFactory$Ada pter.read(ReflectiveTypeAdapterFactory.java:165) ... 19 more pter.read(ReflectiveTypeAdapterFactory.java:165) ... 19 更多

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:\\ [{"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"} "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"}] ,{"1B:\\"null\\"":"M","1C:\\"null\\"":"A"}]

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>>特别是,我指的是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你不告诉我们Position类是什么,它可能不匹配
  2. There is no entry for players in the Json string Json 字符串中没有players条目

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.在字符串"2H:\\"null\\"" : "R" ,它将2H:"null"视为键,将R视为映射的值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM