Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java gson\json反序列化错误_Java_Json_Gson_Deserialization - Fatal编程技术网

Java gson\json反序列化错误

Java gson\json反序列化错误,java,json,gson,deserialization,Java,Json,Gson,Deserialization,我想使用GSON解析一个JSON对象。一切似乎都很好,但当我试图解析一个更“复杂”的对象时,我得到了一个反序列化错误。我试图解析的对象包含一些原语、堆栈和向量集合 堆栈\向量是否可能导致此问题?我能不能过来一下 错误: Servlet上的代码 toString()中的字符串 我建议您使用数组Player[]而不是通用集合Vector。使用Java泛型进行序列化和反序列化并不容易。如果改用数组,则不会有任何问题 但是如果你展示你的Multiplayer和Player的代码,回答起来就容易多了。举一

我想使用GSON解析一个JSON对象。一切似乎都很好,但当我试图解析一个更“复杂”的对象时,我得到了一个反序列化错误。我试图解析的对象包含一些原语、堆栈和向量集合

堆栈\向量是否可能导致此问题?我能不能过来一下

错误: Servlet上的代码 toString()中的字符串
我建议您使用数组
Player[]
而不是通用集合
Vector
。使用Java泛型进行序列化和反序列化并不容易。如果改用数组,则不会有任何问题


但是如果你展示你的
Multiplayer
Player

的代码,回答起来就容易多了。举一个JSON失败的例子。Post代码、JSON和堆栈跟踪。否则没人能帮你(这个问题将被解决);多人游戏结果=json.fromJson(answer.toString(),Multiplayer.class);如果我将其从“Multiplayer”更改为“gameboard”,它将正常工作(在servlet上更改为发送“gameboard”类型而不是“Multiplayer”之后),请编辑您的问题并告诉我们答案。toString()返回什么。也就是JSON值。为什么要使用
Vector
而不是
ArrayList
?多人类
公共类多人扩展游戏数据成员私有向量玩家;私人int播放器
游戏类
公共类游戏数据成员受游戏板保护;受保护的布尔值不受XML的影响;受保护字符串xmlpath;受保护的布尔活动函数;受保护的int-currentPlayer;栈消息栈
播放器类
公共类播放器数据成员受保护的字符串名称;受保护的整数点;受保护的布尔型活动函数;受保护的int-id_;受保护字符串cssStyleClass;乔纳斯,谢谢你的回答,我发布了类定义及其数据成员。更改为Player[]目前需要太多的代码更改,只有在没有其他可能性的情况下,我才会这样做。@Shai:这很容易更改,如果您想将其序列化为Json,我建议您这样做。
Exception in thread "AWT-EventQueue-0" com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@4e76fba0 failed to deserialize json object [{"name_":"Human","points_":1,"alive_":true,"id_":0,"cssStyleClass":"pressed_p1"},{"name_":"Human","points_":0,"alive_":true,"id_":1,"cssStyleClass":"pressed_p2"}] given the type java.util.Vector<entities.Player>
    at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:64)
    at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:92)
    at com.google.gson.JsonObjectDeserializationVisitor.visitFieldUsingCustomHandler(JsonObjectDeserializationVisitor.java:117)
    at com.google.gson.ReflectingFieldNavigator.visitFieldsReflectively(ReflectingFieldNavigator.java:63)
    at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:120)
    at com.google.gson.JsonDeserializationContextDefault.fromJsonObject(JsonDeserializationContextDefault.java:76)
    at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:54)
Gson json = new Gson();
Multiplayer result = json.fromJson(answer.toString(), Multiplayer.class);
Gson gson = new Gson();
Multiplayer game = (Multiplayer)getServletContext().getAttribute("OnlineGame");
String responseStr = gson.toJson(game);

response.setContentType("application/json;charset=UTF-8");
out.write(responseStr);
{serializeNulls:false,serializers:{mapForTypeHierarchy:{Map:MapTypeAdapter,Collection:com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@596e1fb1,InetAddress:com.google.gson.DefaultTypeAdapters$DefaultInetAddressAdapter@4ce2cb55,Enum:EnumTypeAdapter},map:{Integer:IntegerTypeAdapter,URI:UriTypeAdapter,UUID:UuidTypeAdapter,BigInteger:BigIntegerTypeAdapter,URL:UrlTypeAdapter,Short:ShortTypeAdapter,Time:com.google.gson.DefaultTypeAdapters$DefaultTimeTypeAdapter@16bdb503,byte:ByteTypeAdapter,short:ShortTypeAdapter,Number:NumberTypeAdapter,double:com.google.gson.DefaultTypeAdapters$DoubleSerializer@b6e39f,GregorianCalendar:GregorianCalendarTypeAdapter,Calendar:GregorianCalendarTypeAdapter,Byte:ByteTypeAdapter,StringBuilder:StringBuilderTypeAdapter,Float:com.google.gson.DefaultTypeAdapters$FloatSerializer@6719dc16,Locale:LocaleTypeAdapter,StringBuffer:StringBufferTypeAdapter,Date:DefaultDateTypeAdapter(SimpleDateFormat),Character:CharacterTypeAdapter,float:com.google.gson.DefaultTypeAdapters$FloatSerializer@6719dc16,BigDecimal:BigDecimalTypeAdapter,Boolean:BooleanTypeAdapter,boolean:BooleanTypeAdapter,String:StringTypeAdapter,Timestamp:DefaultDateTypeAdapter(SimpleDateFormat),int:IntegerTypeAdapter,long:LongSerializer,Date:com.google.gson.DefaultTypeAdapters$DefaultJavaSqlDateTypeAdapter@52c05d3b,char:CharacterTypeAdapter,Double:com.google.gson.DefaultTypeAdapters$DoubleSerializer@b6e39f,Long:LongSerializer},deserializers:{mapForTypeHierarchy:{Map:MapTypeAdapter,Collection:com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@596e1fb1,InetAddress:com.google.gson.DefaultTypeAdapters$DefaultInetAddressAdapter@4ce2cb55,Enum:EnumTypeAdapter},map:{Integer:IntegerTypeAdapter,URI:UriTypeAdapter,UUID:UuidTypeAdapter,BigInteger:BigIntegerTypeAdapter,URL:UrlTypeAdapter,Short:ShortTypeAdapter,byte:ByteTypeAdapter,Time:com.google.gson.DefaultTypeAdapters$DefaultTimeTypeAdapter@16bdb503,short:ShortTypeAdapter,Number:NumberTypeAdapter,double:DoubleDeserializer,Byte:ByteTypeAdapter,Calendar:GregorianCalendarTypeAdapter,GregorianCalendar:GregorianCalendarTypeAdapter,StringBuilder:StringBuilderTypeAdapter,Float:FloatDeserializer,Locale:LocaleTypeAdapter,StringBuffer:StringBufferTypeAdapter,Date:DefaultDateTypeAdapter(SimpleDateFormat),Character:CharacterTypeAdapter,float:FloatDeserializer,BigDecimal:BigDecimalTypeAdapter,Boolean:BooleanTypeAdapter,boolean:BooleanTypeAdapter,String:StringTypeAdapter,Timestamp:com.google.gson.DefaultTypeAdapters$DefaultTimestampDeserializer@5328f6ee,int:IntegerTypeAdapter,long:LongDeserializer,Date:com.google.gson.DefaultTypeAdapters$DefaultJavaSqlDateTypeAdapter@52c05d3b,char:CharacterTypeAdapter,Double:DoubleDeserializer,Long:LongDeserializer},instanceCreators:{mapForTypeHierarchy:{SortedSet:DefaultConstructorCreator,Set:DefaultConstructorCreator,Queue:DefaultConstructorCreator,Collection:DefaultConstructorCreator,Map:DefaultConstructorCreator},map:{}}