簡體   English   中英

無法使用 GSON 反序列化復雜的 JSON 對象

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

要將數據從服務器傳輸到客戶端,我使用 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:預期為 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) 在 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 更多

我認為問題來自“列表>”,有人可以告訴我如何反序列化它嗎?

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

我看到一個明顯的問題和其他一些潛在的雜項問題:

  1. 您不能那么容易地反序列化泛型類型。 您必須更努力地反序列化它們,請單擊此鏈接。 特別是,我指的是List<LinkedHashMap<Position, Character>>

以下是其他潛在問題:

  1. 你不告訴我們Position類是什么,它可能不匹配
  2. Json 字符串中沒有players條目

你可以試試

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

代替

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

在字符串"2H:\\"null\\"" : "R" ,它將2H:"null"視為鍵,將R視為映射的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM