jjzjj

deserialization

全部标签

php - 我如何解析这个字符串 : a:10:{1:0;s:7 :"default";i:1; . ..?

我怎样才能读取这样的字符串?它们是什么意思?a:10:{i:0;s:7:"default";i:1;s:8:"failsafe";i:2;s:4:"foaf";i:3;s:4:"ical";i:4;s:2:"js";i:5;s:4:"json";i:6;s:6:"opendd";i:7;s:3:"php";i:8;s:3:"rss";i:9;s:3:"xml";}我见过很多使用类似字符串的系统,将其存储在数据库中并解析以获取值。我该如何解析它们?谢谢。 最佳答案 这是一个序列化的字符串。查看var_dump(unserialize(

Java 序列化 : readFields() beyond of readObject()?

ObjectInputStream.readFields()仅在privatevoidreadObject(ObjectInputStream)方法中有效。publicObjectInputStream.GetFieldreadFields()throwsIOException,ClassNotFoundException{SerialCallbackContextctx=curContext;if(ctx==null){thrownewNotActiveException("notincalltoreadObject");}...我无法使用默认序列化来读取对象(即ObjectInpu

java - 如何从文件反序列化到不同的类

我序列化了一个ArrayListlist到一个文件并将该文件传输到另一台机器上的另一个系统。而且因为接收文件的是不同的系统,所以我没有相同的packageA.Changelog类,而是一个packageB.Changelog它具有完全相同的结构,但在不同的包中。当我使用ArrayListchangelogs=(ArrayList)ois.readObject();从文件中读出一个ClassCastException.如何避免这个异常?我是否只需要在另一个系统中创建相同的包结构来接收列表? 最佳答案 是的,您可以做三件事之一。用相同的

java - 如何告诉 jackson 将 "null"字符串反序列化为空文字?

我有一个web服务,它将“null”打印为任何属性的字符串,而不是null文字。它对几乎所有数据类型(字符串或日期)都这样做。例如,在理想情况下它返回{"item":{"title":"Sometitle","expires":"2014-11-0200:00:00"}}但有时它返回:{"item":{"title":"null","expires":"2014-11-0200:00:00"}}这使得title属性值为“null”而不是将其设置为null。或者有时这样:{"item":{"title":"Sometitle","expires":"null"}}这使得反序列化失败,因为

java - 如何用我自己的 readObject 调用替换 Java 的默认反序列化?

有人认为使用Java的默认序列化方法将数据库中的对象存储在blob列中是个好主意。这些对象的结构由另一个组控制,他们将字段类型从BigDecimal更改为Long,但我们数据库中的数据保持不变。现在我们无法读回对象,因为它会导致ClassCastExceptions。我试图通过编写自己的readObject方法来覆盖它,但这会抛出StreamCorruptedException,因为默认的writeObject方法写入了什么。如何使我的readObject调用表现得像Java的默认调用?我可以跳过一定数量的字节来获取我的数据吗? 最佳答案

java - 具有嵌套类型信息属性的 Jackson 多态反序列化

我受到给定JSON结构的限制:{"metadata":{"eventName":"FooEvent","field1":"bla"},"event":{...}}如何使用多态反序列化和嵌套类型信息属性对其进行反序列化?我在@JsonTypeInfo中使用metadata.eventName嵌套属性,如下所示:@JsonTypeInfo(use=Id.NAME,include=As.EXISTING_PROPERTY,visible=true,property="metadata.eventName")@JsonSubTypes({@Type(name="fooEvent",value=

java - 在顶级 map 上使用@JacksonInject 和@JsonCreator

使用Jacksonjson库,可以通过使用@JsonCreator反序列化对象,并给出表示输入json的“顶级”映射,如下所示:classMyClass{finalintfield;@JsonCreatorpublicMyClass(Mapmap){this.field=(int)map.get("theInt");}}甚至在静态工厂方法上:classMyClass{finalintfield;publicMyClass(inttheInt){this.field=theInt;}@JsonCreatorstaticMyClasscreate(Mapmap){returnnewMyCl

java - 反序列化对象图时 hashCode() 中的 NullPointerException

我在Java类中有一个final字段,它肯定会被初始化。当我序列化和反序列化相应的对象图时,我得到一个NPE,因为该字段在hashCode()方法中使用但显然尚未回读。我创建了一个最小的测试用例,其中还包含serialize()/deserialize()方法(以防这些有问题),但我似乎无法了解(潜在的)问题是什么或如何解决。publicclassTestSerializerTest{privatestaticfinalorg.slf4j.Loggerlogger=org.slf4j.LoggerFactory.getLogger(TestSerializerTest.class);p

java - 使用 Jackson 反序列化 JSON 时的隐式默认值

在反序列化各种JSON消息时,我想为某种类型的属性提供一个默认值。是generallysuggested只需在类中指定值,但如果您必须跨多个类执行此操作,这很容易出错。你可能会忘记一个并最终得到null而不是默认值。我的意图是设置所有属于Optional的属性。至Optional.absent.自null到底是什么Optional试图消除,事实证明将它们与jackson一起使用是令人沮丧的。Jackson的大多数允许您自定义反序列化过程的功能都集中在作为输入的JSON上,而不是围绕实例化您要反序列化的对象的过程。我似乎最接近通用解决方案的方法是构建我自己的ValueInstantiat

java - java中默认和生成的串行版本uid有什么区别?

我不知道在java中的什么地方使用默认serialVersionUID或生成的serialVersionUID?privatestaticfinallongserialVersionUID=4125965356358329466L;//generatedprivatestaticfinallongserialVersionUID=1L;//default 最佳答案 SerialVersionID用于序列化和反序列化对象。Java会识别要反序列化的字节是否与本地类版本匹配,否则将抛出异常。这在执行RMI或持久化对象结构时很重要。序列化