问题标签 [serializable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 是否存在可二进制序列化的 XML 特定对象(如 XElement)?
我有一个用例,我通过 MSMQ(主要是字符串)通过网络对对象进行序列化。当我从队列中读取对象时,我希望能够判断用户是否希望该对象是 XML 或字符串。我在想一个好方法就是检查类型。如果它是 XmlElement,则它变成 XML 数据,否则它变成字符串或 CDATA。我不想只检查数据是否为有效 XML 的原因是,有时会提供应该序列化为字符串但实际上是有效 XML 的数据。我希望调用者能够控制反序列化为字符串或 XML。
.NET Framework 中是否有任何类型标记为可序列化,例如 XElement 或 XmlElement(两者均未标记为可序列化)?
asp.net - 我可以在 ViewState 中存储 xmlDocument 对象吗?
我有一个 XML 文档,我想将它存储在 ViewState 中,因此在每次回发时我不需要再次从其物理路径加载它。我也不想将它存储在 SessionState 中。
当我试图在 ViewState 中编写它时,我收到一个错误:
异常详细信息:System.Runtime.Serialization.SerializationException:在程序集“System.Xml,Version=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”中键入“System.Xml.XmlDocument”未标记为可序列化。
我的财产是这样的:
那么如何使 xml 文档可序列化呢?
谢谢
c# - 序列化 ComponentModel.Container?
是否可以序列化(二进制)System.ComponentModel.Container?
java - 我们怎样才能拥有一个可序列化的对象?
我有一个问题,例如,我有一个 GameStartegy 类,它有 53 个字段,所有类型都是一个接口,例如 Strategy,其中一个字段是 Date,当我们创建对象时将被初始化,我如何创建一个可序列化对象??我应该序列化所有字段,如日期吗?谢谢
gwt - GWT - 偶尔出现 com.google.gwt.user.client.rpc.SerializationException
我们被偶尔发生的异常所困扰,例如:
com.google.gwt.user.client.rpc.SerializationException:类型“xxx”不可分配给“com.google.gwt.user.client.rpc.IsSerializable”并且没有自定义字段序列化程序。出于安全目的,此类型不会被序列化。:com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:610) 处的实例 = xxx com.google.gwt.user.client.rpc.impl .AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129) 在 com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:152) 在 com.google.gwt.user.server。 rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:534) 在 com.google.gwt.user.server.rpc.RPC。com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:467) 的 encodeResponse(RPC.java:609) com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC. java:564) 在 com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188) 在 de.softconex.travicemanager.server.TraviceManagerServiceImpl.processCall(TraviceManagerServiceImpl.java:615) 在 com.google .gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224) 在 com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) 在 javax.servlet.http.HttpServlet org.apache.catalina.core.ApplicationFilterChain 的 javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 的 .service(HttpServlet.java:710)。internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) at org .apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve .java:230) 在 org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179) 在 org.jboss. web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84) 在 org.apache.catalina。core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve. java:157) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.ajp .AjpAprProcessor.process(AjpAprProcessor.java:419) 在 org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java:378) 在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint .java:1508) 在 java.lang.Thread.run(Thread.java:619)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 的 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 调用(ErrorReportValve.java:102)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 在 org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) 在 org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler .process(AjpAprProtocol.java:378) 在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 在 java.lang.Thread.run(Thread.java:619)在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 的 org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157) 调用(ErrorReportValve.java:102)在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262) 在 org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) 在 org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler .process(AjpAprProtocol.java:378) 在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 在 java.lang.Thread.run(Thread.java:619)connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java: 378) 在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 在 java.lang.Thread.run(Thread.java:619)connector.CoyoteAdapter.service(CoyoteAdapter.java:262) at org.apache.coyote.ajp.AjpAprProcessor.process(AjpAprProcessor.java:419) at org.apache.coyote.ajp.AjpAprProtocol$AjpConnectionHandler.process(AjpAprProtocol.java: 378) 在 org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1508) 在 java.lang.Thread.run(Thread.java:619)
该应用程序通常运行良好。指示的类实现 Serializable(整个对象图)。
到目前为止,唯一的模式/观察结果是:
我们似乎只有在 iframe 中使用应用程序时才会出现问题
部署新版本的应用程序时似乎会出现此问题
在隐私模式下运行 firefox(禁用所有缓存等)并不能解决问题
有任何想法吗?
霍尔格
java - Java 对象何时可序列化但不可克隆?
如果 Java 类实现了Serializable
接口但没有公共clone()
方法,通常可以像这样创建深拷贝:
我经常遇到像这样的第三方库类,并诉诸上述黑客攻击。我什至ObjectOutputStream
有时会扩展以使副本更浅。除了效率低下(编码/解码速度慢并且临时序列化图会消耗大量内存)之外,它从未引起严重问题。)
如果使用这种技术不安全,那么类可能不应该被声明Serializable
。
所以我想知道的是,如果你的类是Serializable
,什么可能会阻止你定义一个公共clone()
方法(使用Cloneable
接口或复制构造函数?)
相关:在 Java 中复制对象
asp.net - 如何序列化 ASP.NET 用户控件
我有一个带有 GridView 的应用程序,这个 GridView 在您的 PagerTemplate 中有一个 GridViewPager,它是一个 UserControl。
现在我正在尝试将此 GridViewPager 存储在 ViewState 中,但我遇到了序列化问题。Asp.Net 告诉我该类未标记为可序列化。我尝试将其标记为可序列化,如下所示:
但它不起作用
我的代码很简单,让我们看看:
这是错误
“/”应用程序中的服务器错误。
在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Runtime.Serialization.SerializationException:在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。
源错误:
在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。
堆栈跟踪:
[SerializationException:在程序集“App_Web_epwoiz7x,版本=0.0.0.0,文化=中性,PublicKeyToken=null”中键入“ASP.view_usercontrols_pagers_gridviewpager_ascx”未标记为可序列化。] System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型)+7733643 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context) +258 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +111 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Object obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter) +161 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo。序列化(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,ObjectWriter objectWriter)+51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象图,Header[] inHeaders,__BinaryWriter serWriter,布尔 fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object图)+13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter 写入器,对象值)+845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,对象图,Header[] 标头,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+845ObjectWriter objectWriter) +51 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck) +410 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream,对象图,Header[] 标头,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+845对象图,Header[] 标题,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value ) +845对象图,Header[] 标题,布尔 fCheck) +134 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph) +13 System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer, Object value ) +845
[ArgumentException:错误序列化“ASP.view_usercontrols_pagers_gridviewpager_ascx”类型的值“ASP.view_usercontrols_pagers_gridviewpager_ascx”。] System.Web.UI.ObjectStateFormatter.SerializeValue(SerializerBinaryWriter writer,对象值)+3395 System.Web.UI.ObjectStateFormatter.Serialize(流输出流, 对象状态图)+110 System.Web.UI.ObjectStateFormatter.Serialize(对象状态图)+57 System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Serialize(对象状态)+4 System.Web.UI。 Util.SerializeWithAssert(IStateFormatter formatter, Object stateGraph) +37 System.Web.UI.HiddenFieldPageStatePersister.Save() +79 System.Web.UI.Page.SavePageStateToPersistenceMedium(Object state) +105 System.Web.UI.Page.SaveAllState( ) +236 System.Web.UI.Page。ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)+1099
版本信息:Microsoft .NET Framework 版本:2.0.50727.3082;ASP.NET 版本:2.0.50727.4028
java - 这是什么意思:可序列化的类没有声明一个静态的最终 serialVersionUID 字段?
我有标题中给出的警告信息。我想了解并删除它。我已经找到了关于这个问题的一些答案,但由于技术术语过多,我不理解这些答案。能不能用简单的话来解释这个问题?
PS我知道OOP是什么。我知道什么是对象、类、方法、字段和实例化。
PPS 如果有人需要我的代码,它就在这里:
c# - 将控件属性(例如:TextBox.Text)序列化/保存到自定义配置文件
我正在开发一个小程序,我想将一些控件状态和属性保存到配置文件中。但是,由于多种原因,我不想使用“传统”设置文件,而是将其序列化或简单地保存到特定文件中。
例如,获取 window1 的 TextBox1.Text 并将其序列化,这样当我启动应用程序时,我就可以重新使用旧值。例如,某些复选框也是如此。
如何才能做到这一点 ?这不是一个“功课”项目,因为我在业余时间从头开始学习 C#。我已经寻找了几种方法,但是它们太复杂了,要么使用专门针对该目的的自定义序列化类,要么使用 Visual Studio 中的标准 .settings 文件设置。另外,我在 C# 中工作,程序使用 WPF 而不是 MFC。
c# - 可序列化到派生类
有没有一种简单的方法来强制派生类必须是可序列化的?
假设我定义了一个需要派生类可序列化的接口。根据这篇文章,我不能只在接口中指定可序列化属性,因为派生类不需要尊重这一点。
我相信我可以让接口继承自 ISerializable 接口,但这是否意味着派生类不能使用该属性来指定序列化(而不是实际实现 ISerializable 的方法)?