Java 反序列化服务器响应
我想知道是不是反序列化服务器响应的方法。因此,在我的例子中,我有一个Java 反序列化服务器响应,java,http,gwt,Java,Http,Gwt,我想知道是不是反序列化服务器响应的方法。因此,在我的例子中,我有一个LinkedHashMap,并从服务器上重试: @Override public LinkedHashMap<String, Date> testHMap() { LinkedHashMap<String, Date> map = new LinkedHashMap<>(); map.put("AA", new Date()); map
LinkedHashMap
,并从服务器上重试:
@Override
public LinkedHashMap<String, Date> testHMap() {
LinkedHashMap<String, Date> map = new LinkedHashMap<>();
map.put("AA", new Date());
map.put("BB", new Date());
return map;
}
@覆盖
公共LinkedHashMap testHMap(){
LinkedHashMap=新建LinkedHashMap();
地图放置(“AA”,新日期());
地图放置(“BB”,新日期());
返回图;
}
我正在尝试获取关于另一个应用程序(gwt)的信息,以便只能通过HTTP执行调用,从上面的示例来看,HTTP响应如下://OK['WM577vZ',4,5,2,'WM577vZ',4,3,2,2,0,1,[“java.util.LinkedHashMap/3008245022”,“java.lang.String/2004016611”,“AA”,“java.util.Date/3385151746”,“BB”],0,7]
那么,有没有办法从这个HTTP响应获取LinkedHashMap数据呢?我想您正在寻找类似restyGWT的东西
但是我不太理解你的问题,所以我可能错了。我想你在寻找类似restyGWT的东西
但是我不太理解你的问题,所以我可能错了。LinkedHashMap在该响应中-该响应是一个对象流(即,如果同一个值出现两次,它将只序列化一次,这使得内容更小,并且允许循环引用,而不仅仅是一个平面树) 读取RPC有效负载是“向后”完成的-从末尾开始向后读取,我们从7(版本)、0(设置的标志)开始,一大串字符串(“字符串表”,解码应答所需的字符串,因此每个字符串只列出一次) 然后是
1
-流中的第一个对象是字符串表中第一个条目的类型,即“java.util.LinkedHashMap/3008245022”
。要解码LinkedHashMap,我们首先需要知道它是如何排序的——下一个0
值告诉我们它使用默认的“插入顺序”,然后下一个2
表示映射中有两个条目
现在我们迭代,直到看到两对键和值。下一个值将告诉我们正在查看的键的类型:2
意味着进入字符串表,我们看到“java.lang.string/2004016611”
,因此我们知道它将是一个字符串,然后3
也从字符串表向我们显示“AA”
。下一个是4
,该键的值的类型,可以预见这是字符串表中的“java.util.Date/3385151746”
。为了反序列化一个日期,我们从有效负载中读取一个long
——GWT base64对这些数据进行编码以使其更小——这是'WM577vZ'
,下一个标记
接下来的4个标记(2
、5
、4
和'WM577vZ'
)重复此过程,将第二个字符串键添加到地图中,并为其添加日期值
--
这个特定的有效负载并不能真正显示RPC的能力,但是它非常容易手工读取。在GWT应用程序之外解码它们目前并不容易(尽管我正在开发一个通用工具,它应该可以在任何地方解码,但SO答案并不是讨论它的好地方)——如果你想要一种可以由普通JS或其他非GWT技术处理的格式,RPC此时可能不是您的最佳选择。LinkedHashMap在该响应中-该响应是一个对象流(即,如果相同的值出现两次,它将只被序列化一次,这使得内容更小,并且还允许循环引用,而不仅仅是平面树) 读取RPC有效负载是“向后”完成的-从末尾开始向后读取,我们从7(版本)、0(设置的标志)开始,一大串字符串(“字符串表”,解码应答所需的字符串,因此每个字符串只列出一次) 然后是
1
-流中的第一个对象是字符串表中第一个条目的类型,即“java.util.LinkedHashMap/3008245022”
。要解码LinkedHashMap,我们首先需要知道它是如何排序的——下一个0
值告诉我们它使用默认的“插入顺序”,然后下一个2
表示映射中有两个条目
现在我们迭代,直到看到两对键和值。下一个值将告诉我们正在查看的键的类型:2
意味着进入字符串表,我们看到“java.lang.string/2004016611”
,因此我们知道它将是一个字符串,然后3
也从字符串表向我们显示“AA”
。下一个是4
,该键的值的类型,可以预见这是字符串表中的“java.util.Date/3385151746”
。为了反序列化一个日期,我们从有效负载中读取一个long
——GWT base64对这些数据进行编码以使其更小——这是'WM577vZ'
,下一个标记
接下来的4个标记(2
、5
、4
和'WM577vZ'
)重复此过程,将第二个字符串键添加到地图中,并为其添加日期值
--
这个特定的有效负载并不能真正显示RPC的能力,但是它非常容易手工读取。在GWT应用程序之外解码它们目前并不容易(尽管我正在开发一个通用工具,它应该可以在任何地方解码,但SO答案并不是讨论它的好地方)——如果你想要一种可以由普通JS或其他非GWT技术处理的格式,RPC可能不是你目前的最佳选择。Hi,关于如何解释“响应”中的各种数据,如数组、哈希集、数字、日期和自定义字段,您是否有任何GWT文档链接可供参考。@如上所述,每个类都按顺序序列化其字段,并且递归地进行序列化,因此它将根据您的结构而变化-复杂对象的哈希集将