Tag: 序列化

jackson,序列化参考的一个属性

当序列化具有其他对象引用的Java对象时,我只需要序列化嵌套对象的一个​​属性(通常是外键的情况,因此序列化对象引用的“id”属性)。 其他一切。 例如,我有两个类,我需要序列化为JSON和XML(为清楚起见,删除了JPA注释): 关系:用户 – >(一对多)地址信息; 另外:AddressInformation – >(一对一)用户 @XmlRootElement public class User { private String id; private String firstName; private String lastName; private String email; private AddressInformation defaultAddress; private Set addressInformation; public User() { } @JsonProperty(value = “id”) @XmlAttribute(name = “id”) public String getId() { return id; } public void setId(String id) { this.id […]

Avro架构不支持向后兼容性

我有这个avro架构 { “namespace”: “xx.xxxx.xxxxx.xxxxx”, “type”: “record”, “name”: “MyPayLoad”, “fields”: [ {“name”: “filed1”, “type”: “string”}, {“name”: “filed2”, “type”: “long”}, {“name”: “filed3”, “type”: “boolean”}, { “name” : “metrics”, “type”: { “type” : “array”, “items”: { “name”: “MyRecord”, “type”: “record”, “fields” : [ {“name”: “min”, “type”: “long”}, {“name”: “max”, “type”: “long”}, {“name”: “sum”, “type”: “long”}, {“name”: “count”, “type”: […]

序列化:java.io.StreamCorruptedException:无效的流标题:0AACED00

我是一名学习我的文件IO技能的学生,我遇到了使用ObjectInputStream从文件中读取对象的问题。 代码一直抛出一个InvalidClassException,我无法找到代码是如何在线投掷或通过反复试验。 这是我的代码: import java.io.*; import java.util.ArrayList; import java.util.List; public class ReadFromFile { String filename; List os; public ReadFromFile(String filename) { this.filename = filename; os = new ArrayList(); } public Object[] readObject() { try { FileInputStream fis = new FileInputStream(filename); ObjectInputStream ois = new ObjectInputStream(fis); System.out.print(“reading\n”); while (true) { os.add(ois.readObject()); System.out.print(“read one\n”); } } catch […]

Akka是否支持没有对象序列化的进程内消息传递?

希望使用Akka Actors在同一JVM中的Java线程之间传递事件。 其中一些事件包含大对象(10-100Mb)。 我想避免序列化这些对象,同时通过仅传递对象的引用来节省内存空间; Akka支持这个吗? 我知道可以实现一个自定义的Akka序列化程序,这可能是一个解决方案,但除此之外我不太了解该框架。

如何在运行时从类序列化中排除字段?

如何在运行时从序列化过程中排除类字段? 编译时有瞬态修饰符,但运行时呢? 我指的是使用ObjectOutputStream的常见java序列化,而不是gson或其他东西。 对不起,我想我没解释得对。 这不完全是关于序列化,而是关于反序列化。 我有一批遗留文件并像这样处理它们: public class Deserialize { /** * @param args * @throws IOException * @throws ClassNotFoundException */ public static void main(String[] args) throws ClassNotFoundException, IOException { File file = new File(“/home/developer/workspace/DDFS/some.ddf”); HackedObjectInputStream in = new HackedObjectInputStream(new GZIPInputStream(new FileInputStream(file))); System.out.println(“Attempt to open ” + file.getAbsolutePath()); Object obj = in.readObject(); in.close(); } static […]

java静态变量序列化

如何在序列化期间保持静态变量的值(如果完全持久化)。 我已经在堆栈上读到了类似的问题,它表示静态变量本质上是瞬态的,即它们的状态或当前值不是序列化的。 我只是做了一个非常简单的例子,我将一个类序列化并将其保存到一个文件中,然后再次从文件重构该类。我惊奇地发现静态变量的值和序列化发生时的值都被保存了。 这是怎么发生的。 这是因为在序列化过程中会保存类模板及其实例信息。 这是代码片段 – public class ChildClass implements Serializable, Cloneable{ /** * */ private static final long serialVersionUID = 5041762167843978459L; private static int staticState; int state = 0; public ChildClass(int state){ this.state = state; staticState = 10001; } public String toString() { return “state” + state + ” ” + “static state […]

Java中的序列化版本uid

序列化ID如何存储在对象的实例中? 我们在Java中声明的序列化ID是静态字段;静态字段不是序列化的。 应该有一些方法来存储静态最终字段。 java是如何做到的?

序列化与字节码转换

我是编程的初学者,我只是想知道序列化过程和转换为字节代码(中间语言)的过程之间是否存在差异。 我在javacodegeeks.com上找到了这个: 当需要通过网络发送数据或存储在文件中时,通常会使用序列化。 数据我指的是对象而不是文本。 现在的问题是您的网络基础设施和您的硬盘是理解位和字节但不了解Java对象的硬件组件。 序列化是将Java对象的值/状态转换为字节以通过网络发送或保存它。 – > 另一方面,反序列化是将字节代码转换为相应的java对象。 < – 根据我对这一段的理解,序列化可能是java将其程序转换为字节代码以便能够传输到不同计算机环境并仍能正常运行的过程。 我在想这个是正确的吗?

如何将Vector放入intent.extra?

我已经开始为android编写一个小应用程序。 它看起来很漂亮,但有一点我不明白。 我在活动A中创建了一个新的意图,我添加了一个序列化的矢量intent.putExtra(“key”, vector) 。 在被调用的活动B上我这样做: Vector items = (Vector) getIntent().getExtras().getSerializable(“key”) 。 此行导致ClassCastException 。 有谁知道为什么? 请帮我 :-) 以下是两个活动和ItemModel : ItemModel: public class ItemModel implements java.io.Serializable { private static final long serialVersionUID = -1772392719565658730L; public int id; public String name; public String quantity; public int status; } ShoppingListActivity(A): public void onClickItems(final View v){ final Intent intent […]

序列化/反序列化机制

说,我有一个具有字段值的类X ,即 class X implements Serializable { private int value; // … } 此外,它没有显示getter和setter。 这个类是序列化的。 在反序列化时,结束同一类具有值字段,访问说明符是公共的。 此外,这个类没有getter和setter。 所以,我的问题是: 如果字段的访问说明符发生更改或者反序列化结束时类中缺少某些或所有方法,反序列化是否会失败? 在反序列化期间为字段分配值的机制是什么?