我有一个对象,其中包含一些要序列化的不可序列化字段。它们来自我无法更改的单独API,因此使它们可序列化不是一种选择。主要问题是Location类。它包含我需要的四个可以序列化的东西,所有整数。如何使用read / writeObject创建可以执行以下操作的自定义序列化方法:
// writeObject:
List<Integer> loc = new ArrayList<Integer>();
loc.add(location.x);
loc.add(location.y);
loc.add(location.z);
loc.add(location.uid);
// ... serialization code
// readObject:
List<Integer> loc = deserialize(); // Replace with real deserialization
location = new Location(loc.get(0), loc.get(1), loc.get(2), loc.get(3));
// ... more code
我怎样才能做到这一点?
Java支持自定义序列化。阅读“自定义默认协议”部分。
去引用:
但是,有一个奇怪但狡猾的解决方案。通过使用序列化机制的内置功能,开发人员可以通过在类文件中提供两种方法来增强常规过程。这些方法是:
在此方法中,如果需要,你可以将其序列化为其他形式,例如你说明的ArrayList或JSON或其他数据格式/方法,然后将其重新构造回readObject()
在你的示例中,添加以下代码:
private void writeObject(ObjectOutputStream oos)
throws IOException {
// default serialization
oos.defaultWriteObject();
// write the object
List loc = new ArrayList();
loc.add(location.x);
loc.add(location.y);
loc.add(location.z);
loc.add(location.uid);
oos.writeObject(loc);
}
private void readObject(ObjectInputStream ois)
throws ClassNotFoundException, IOException {
// default deserialization
ois.defaultReadObject();
List loc = (List)ois.readObject(); // Replace with real deserialization
location = new Location(loc.get(0), loc.get(1), loc.get(2), loc.get(3));
// ... more code
}
easyopen序列化使用fastjson处理json,xstream处理xml。现在我们来自定义实现一个json处理: 新建一个类JsonFormatter,实现ResultSerializer接口 public class JsonFormatter implements ResultSerializer { @Override public String serialize(
我试图创建会影响序列化值的自定义jackson注释。 意思是: 现在序列化对象X(10)将导致: 我怎样才能做到这一点?
问题内容: 有没有一种方法/库可以让我像GSON自定义序列化程序一样自定义JSON序列化? 这是我想要得到的: 此对象: KeyValuePair(“ Age”,10)myAge 通常会像 “ myAge”:{“ Key”:“ Age”,“ Value”:10} 同时我希望它进行序列化,例如: “年龄”:10 。有任何想法吗? 问题答案: 首先,我建议使用newton json dll。 其次,您
问题内容: 我的代码结构如下。 和 基本上我正在扫描网站以获取统计信息,例如标题标签,重复标题等。 我正在使用JQuery并向Web服务进行AJAX调用并检索url统计信息,而该过程正在运行以显示到目前为止收集的用户url统计信息,因为扫描大型网站需要花费大量时间。因此,每隔5秒,我就会从服务器检索统计信息。现在的问题是我需要在扫描处理完成时(而不是更新期间)最后发送所有List变量数据。现在发生
问题内容: 我有一个需要序列化为XML的对象,其中包含以下字段: XStream可以很好地序列化它(在使用一些别名之后),如下所示: 就目前而言还可以,但是我希望能够将元素重命名为。从XStream站点上的别名文档中,我看不到一种明显的方法。我是否缺少明显的东西? 问题答案: 我建议将更改为,其中Tag是本质上仅包含字符串的域对象。然后你说: 您将得到您想要的。这样可以避免滚动自己的Convert
例如:在pojo类中使用Date对象,将其序列化为默认格式“2016-09-27T12:11:17.430Z”。我只需要序列化它来显示日期值,去掉与时间相关的信息。