我的问题可能听起来很基础,但我对Jackson的writeValueAsString(String)被称为序列化和将Java对象转换为字节流也被称为序列化有些困惑。
有人能帮我理解一下它们两者之间的区别吗?
我问这个问题的原因是,我遇到了这样一种情况:我调用REST服务。REST以JSON形式在10秒内响应。然而,如果我记录服务器端的writeValueAsString(String)的时间,它只需要一秒钟左右。
更新1:这就是我观察到的
1. 上次调用REST服务(返回一个集合)的最后一条日志打印时间是-->9:10:10 UTC。同时,由于我正在使用curl调用服务,数据在我的机器Git Bash上开始流式传输。 2. 10秒后我的Servlet过滤器的最后一条日志(拦截对REST api uri的请求)在--> 9:10:20 UTC打印出来,同时Git Bash上的数据流式传输停止(近35Mb已下载)。那么,这种行为的原因是什么?
如果Jackson在序列化仍在进行中时同时开始发送字节呢?
这是因为Jackson序列化速度慢还是网络带宽低?
请注意,我尝试只使用writeValueAsString(..)/readValue(..)操作而没有任何网络调用通过junit运行我的序列化和反序列化,并且它们在一秒钟内执行完毕。
谢谢
有人能帮我理解一下它们两者之间的区别吗?
我问这个问题的原因是,我遇到了这样一种情况:我调用REST服务。REST以JSON形式在10秒内响应。然而,如果我记录服务器端的writeValueAsString(String)的时间,它只需要一秒钟左右。
更新1:这就是我观察到的
1. 上次调用REST服务(返回一个集合)的最后一条日志打印时间是-->9:10:10 UTC。同时,由于我正在使用curl调用服务,数据在我的机器Git Bash上开始流式传输。 2. 10秒后我的Servlet过滤器的最后一条日志(拦截对REST api uri的请求)在--> 9:10:20 UTC打印出来,同时Git Bash上的数据流式传输停止(近35Mb已下载)。那么,这种行为的原因是什么?
如果Jackson在序列化仍在进行中时同时开始发送字节呢?
这是因为Jackson序列化速度慢还是网络带宽低?
请注意,我尝试只使用writeValueAsString(..)/readValue(..)操作而没有任何网络调用通过junit运行我的序列化和反序列化,并且它们在一秒钟内执行完毕。
谢谢
writeValueAsString
的Javadoc链接吗?或者在你的问题中提供一个[mre]吗? - Slaw