JAVA 序列化 技术教程文章

java对象序列化机制【代码】

1.定义 java对象序列化机制允许实现了Serializable/Externalizable接口的java对象永久性地保存到计算机的磁盘中,或则允许java对象直接在网络中传输,摆脱平台的限制。反序列化即使将IO流中的字节序列转化为java对象。 2.原理 3.使用 序列化: 1)一个实现了Serializable接口的Java类 2)创建一个ObjectOutputSream对象 3)ObjectOutputSream是一个处理流,必须建立在其他节点流的基础上ObjectOutputSream objectOutputSream=new Ob...

java-序列化未实现?

我了解的是,我可以实现Serializable接口来使我的对象可序列化. 但是当Serializable是接口时,我不知道writeObject方法在哪里实现,因此它不包含方法的实现,而只是定义?解决方法:您已经注意到,Serializable是Marker接口,没有任何实现方法.实现Serializable只是要注意,该对象可以进行序列化,可以使用ObjectOutputStream进行处理. 您提到的方法需要在实现Serializable接口的类中实现,并且将自动拾取.由于没有实现它们的义务,因此它们不...

java-gson-反序列化包含列表的对象【代码】

我是gson的新手,正在尝试研究如何反序列化对象中的列表. 错误消息提示我为Player创建了InstanceCreator.但是在实施时,我发现反序列化的对象包含一个Player列表,其名称字段设置为“默认值”,而不是从json字符串中选取值.所以我现在想知道这种方法是否正确. 这是我正在研究的模型的简化,但突出了问题所在…public interface Player {String name(); }public class PlayerImpl implements Player {private String name;public PlayerI...

java-杰克逊反序列化抽象类【代码】

我正在尝试使用JSON ObjectMapper反序列化对象.尝试反序列化时出现以下错误com.fasterxml.jackson.databind.JsonMappingException: Can not constructinstance of com.phoenix.types.OrderItem:abstract types either need to be mapped to concrete types, have customdeserializer, or contain additional type information at [Source:java.io.StringReader@4bb33f74; line: 112, column: 7] (throughreference chain:com.phoe...

带继承的序列化(Java)【代码】

我正在学习序列化和继承,并且我不了解谁在反序列化过程中调用了no-arg构造函数.超类A不实现Serializable,而子类B扩展A实现Serializable. 超类Apublic class A {int i;public A(int i) {this.i = i;}public A(){i = 50;System.out.println("A's class constructor called");} }B类import java.io.Serializable;public class B extends A implements Serializable {int j;// parameterized constructorpublic B(int i,int j) {supe...

Java“设置对象”,序列化/反序列化【代码】

(代码是针对Android的,实际上,我需要在Android和Java SE之间可移植的代码.) 我想要一个具有各种游戏设置的“设置”类,例如public int map_size; public String server_name;等等 需要相当频繁地访问数据(因此需要访问成员,而不是键值映射),并需要以某种标准方式不时对它进行反序列化(主要是通过网络发送). 我希望能够 >将对象序列化和反序列化为XML或JSON,而不必显式地为每个成员编写代码(但仍可以对格式进行某种程度的控制).>定义...

我可以(轻松地)使用第三方库来处理Java RMI的序列化吗?【代码】

我非常喜欢通过Java的RMI调用远程方法的简单性,但是其序列化格式的冗长性是一个主要的嗡嗡声(是的,我已经进行了基准测试,谢谢).在设计RPC(松散地说)组件时,Sun的建筑师似乎做了明显的正确选择,但是在实现序列化时却出现了一次史诗般的失败. 相反,似乎Thrift,Avro,Kryo(尤其是),协议缓冲区(不是很多)等的架构师在设计其序列化格式时通常做了明显的正确选择,但要么都不提供RPC机制,要么提供是不必要的卷积(或不成熟),或者是比调用远程...

序列化java.lang.Throwable与堆栈跟踪一起,导致链和相关的堆栈跟踪【代码】

我正在编写GWT应用程序,在这里我需要使用使用标准Java序列化机制的GWT RPC发送java.lang.Throwable实例(分别具有其原因链和所有堆栈跟踪)(就我而言). 问题是当我从客户端传递以下示例异常时:java.lang.RuntimeException (message=null, stacktrace A) caused by java.io.IOException (message="Problems with io", stacktrace B) caused by java.lang.IllegalStateException (message="Some error text", stacktrace C), cause=nu...

java-重写方法后无法序列化的类【代码】

我在测试用例中将createSocket()方法覆盖为模拟套接字中的pas.完成此操作后,对象将不再可序列化. 这是不起作用的示例. Foo.javaimport java.io.Serializable;public class Foo implements Serializable {private static final long serialVersionUID = 3109852436898487119L;public void bar() {System.out.println("Foo");} }FooTest.javaimport java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.Obje...

java-杰克逊自定义序列化器按字段名称?【代码】

我有一个要序列化的POJO,其对象类型为表示形式的对象字段,并且为此编写了一个自定义序列化程序. POJO:@XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "user", propOrder = {//...... }) public class User {protected User.Event userEvent;protected Boolean isValid;protected Boolean isPrivleged;// getter/ setters// Inner static classpublic static class Event {protected Object representation;protected Use...

我可以在Java中GSON反序列化包含连字符的变量名称吗?【代码】

我在我的应用程序中使用GSON.我有以下JSON响应:{"success":true,"person-name": "John" }因此,我正在创建一个像这样的类:class Person {boolean success;String person-name; }但是,我无法创建可变的人名.我该如何解决?解决方法:选择一个有效的Java标识符,并使用@SerializedName批注告诉GSON相应的JSON属性的名称:import com.google.gson.annotations.SerializedName;class Person {boolean success;@SerializedName("person-n...

java-用于地图序列化的Jackson模块【代码】

我有一个包含地图(带有非字符串键)和一些其他字段的类.public class MyClass() {private Map<KeyObject, OtherObject> map;private String someField;public MyClass(Map<KeyObject, OtherObject> map, String someField) {this.map = map;this.someField = someField;}// Getters & Setters }我想使用Jackson来对该类进行序列化和反序列化.我看到了另一种方式,决定尝试使用jackson modules. 我遵循了this post,并扩展了JsonDeseri...

任务不可序列化-Spark Java【代码】

我在Spark中遇到“任务无法序列化”错误.我已经搜索并尝试使用某些帖子中建议的静态函数,但是它仍然会给出相同的错误. 代码如下:public class Rating implements Serializable {private SparkSession spark;private SparkConf sparkConf;private JavaSparkContext jsc;private static Function<String, Rating> mapFunc;public Rating() {mapFunc = new Function<String, Rating>() {public Rating call(String str) {return Rati...

java-将远程对象反序列化为最窄的可访问类【代码】

在shared.jar中,我有:abstract class MyParent {} abstract class MyClass {MyParent getFoo(); }server.jar包含abstract class MyChild extends MyParent {} abstract class MyClassConcrete {MyParent getFoo() {return new MyChild();} }client.jar中:MyParent foo = myClass.getFoo();如果所有3个罐子都放在一个类加载器中,则一切正常. 但是,客户端和服务器位于以下不同的JVM中: > JVM-1包含:server.jar,shared.jar> JVM-2...

保存到二进制/序列化Java【代码】

我必须报价,1.Save accounts to a binary (serialized) file.2.Load (recreate) accounts from a binary (serialized) file.因此,首先,我正在查找确切的例子,而我却迷失了自己,在同样的情况下,人们提到xml,在我的脑海中,我认为它的意思像01010011000(二进制),而当我查看其他代码时,它看起来就像是正常的文本文件保存. 他到底是什么意思,有人可以举一个例子,或者给我一个更好地阐明这一点的网站吗?一旦看到了实际需要执行的操作,就...

java静态变量序列化【代码】

如何在序列化期间保持静态变量的值(如果完全持久化).我在堆栈上读过类似的问题,它说静态变量本质上是瞬态的,即它们的状态或当前值不是序列化的. 我只是做了一个非常简单的例子,我将一个类序列化并将其保存到文件中,然后再次从文件重构该类.我惊奇地发现静态变量的值和序列化发生时的值都被保存了. 这是怎么发生的.这是因为在序列化期间会保存类模板及其实例信息.这是代码片段 – public class ChildClass implements Serializable,...

java – com.google.firebase.database.DatabaseException:不支持序列化数组,请改用列表【代码】

我试图使用以下代码持久化自定义对象:DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(); DatabaseReference curWorkoutExercisesRef = databaseReference.child("workouts").child(mCurrentWorkout.getId()).child("workoutExercises");WorkoutExercise we = new WorkoutExercise(exercise); curWorkoutExercisesRef.push().setValue(we);这是我的目标:public class WorkoutExercise {priv...

java – LocalDateTime – 使用LocalDateTime.parse进行反序列化【代码】

我有字段initiateDate,它由ToStringSerializer类序列化为ISO-8601格式.@JsonSerialize(using = ToStringSerializer.class) private LocalDateTime initiationDate;当我收到以下JSON时... "initiationDate": "2016-05-11T17:32:20.897", ...我想通过LocalDateTime.parse(CharSequence text)工厂方法对其进行反序列化.我的所有尝试都以com.fasterxml.jackson.databind.JsonMappingException结束:Can not instantiate value of type ...

java – 为什么我不能打开根节点并反序列化一个对象数组?【代码】

为什么我无法通过展开根节点来反序列化对象数组?import java.io.IOException; import java.util.Arrays; import java.util.List;import org.codehaus.jackson.map.DeserializationConfig; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.map.annotate.JsonRootName; import org.junit.Assert; import org.junit.Test;public class RootNodeTest extends Assert {@JsonRootName("customers")public s...

java – 如何使用GSON反序列化Map【代码】

我是GSON的新手,并获得了这种格式的JSON响应(只是一个更简单的例子,因此值没有意义):{"Thomas": {"age": 32,"surname": "Scott"},"Andy": {"age": 25,"surname": "Miller"} }我希望GSON使它成为一个Map,PersonData显然是一个Object.名称字符串是PersonData的标识符. 正如我所说,我对GSON很新,只尝试过类似的东西:Gson gson = new Gson(); Map<String, PersonData> decoded = gson.fromJson(jsonString, new TypeToken<Map<String...