Tag: 序列化

反序列化Gson中的通用列表

我想编写一个generics函数,用Gson反序列化generics类型List,代码如下: private List GetListFromFile(String filename) { //Read textfile BufferedReader reader; String data=””; try { reader = new BufferedReader(new FileReader(filename)); data = reader.readLine(); reader.close(); } catch (FileNotFoundException ex) { } catch (IOException ex) { } if (data == null) { List Spiel = new ArrayList(); return Spiel; } else { //get list with Deserialise Gson gson […]

GSON:如何在保持循环引用的同时防止StackOverflowError?

我有一个带循环引用的结构。 出于调试目的,我想转储它。 基本上任何格式,但我选择了JSON。 因为它可以是任何类,所以我选择了不需要JAXB注释的GSON。 但是GSON命中循环引用并递归直到StackOverflowError 。 我怎样才能限制GSON 忽略某些class级成员? @XmlTransient和@JsonIgnore都没有服从。 忽略某些对象图路径? 例如,我可以指示GSON不要序列化release.customFields.product 。 去最多2个级别的深度? 相关: Gson.toJson给出了StackOverFlowError,在这种情况下如何获得正确的json? (公共静态类)

如何将字段标记为瞬态可以序列化对象

public class Foo implements java.io.Serializable { private int v1; private static double v2; private Loan v3 = new Loan(); } 选项: 答:Foo的一个实例可以被序列化,因为Foo实现了Serializable。 B.无法序列化Foo的实例,因为Foo包含不可序列化的实例变量v3。 C.如果将v3标记为瞬态,则Foo的实例是可序列化的。 D. b和c 答案:D Explanation:即使对象实现java.io.Serializable ,也可能无法序列化对象,因为它可能包含不可序列化的实例变量。 现在我的问题是: 据我所知,transient 用于关闭序列化。 那么在这种情况下如何瞬态,帮助我们序列化foo?

使用Java中的GSON解析复杂的Json对象

我有一个非常长的JSON来解析Gson,但为了简洁起见,我将它修剪为这个例子: { “volumes”: [ { “status”: “available”, “managed”: true, “name”: “va_85621143-1133-412f-83b4-57a01a552638_”, “support”: { “status”: “supported” }, “storage_pool”: “pfm9253_pfm9254_new”, “id”: “afb8e294-6188-4907-9f6f-963c7623cecb”, “size”: 9 }, { “status”: “in-use”, “managed”: false, “name”: “bt_newd20”, “support”: { “status”: “not_supported”, “reasons”: [ “This volume is not a candidate for management because it is already attached to a virtual machine. To manage […]

Java标志以启用扩展的序列化调试信息

我目前正在使用复杂对象在tomcat上进行HTTP会话复制。 某些对象实现Serializable但保留不可序列化的成员。 不幸的是,默认情况下,堆栈跟踪在这里没有提供太多有用的信息。 有一个标志-XX:???? 发生NotSerializableException时在stacktrace中启用详细类名 。 这个标志会帮助我找到错误的来源。 但我忘记了它的名字 国旗的名称是什么?

使用键作为字符串序列化和反序列化映射

我打算序列化和反序列化其键是字符串的hashmap。 从Josh Bloch的Effective Java,我理解以下内容。 第222页 例如,考虑哈希表的情况。 物理表示是包含键值条目的一系列散列桶。 放入条目的哪个桶是密钥的哈希码的函数,通常保证从JVM实现到JVM实现不相同。 实际上,从运行到同一JVM实现运行甚至不能保证它们是相同的。 因此,接受哈希表的默认序列化表单将构成严重错误。 序列化和反序列化哈希表可能会产生一个不变量严重损坏的对象。 我的问题是:1)一般来说,覆盖地图关键类的等于和哈希码会解决这个问题,地图可以正确恢复吗? 2)如果我的键是一个String并且String类已经覆盖了hashCode()方法,我是否还会遇到上述问题。 (我看到一个错误,让我觉得这可能仍然是一个问题,即使键是重写hashCode的String。) 3)以前,我通过序列化一系列条目(键,值)解决了这个问题,并且在反序列化时我会重建地图。 我想知道是否有更好的方法。 4)如果问题1和2的答案仍然无法保证,有人可以解释原因吗? 如果hashCodes是相同的,他们会跨JVM转到相同的存储区吗? 谢谢,格雷斯

如何使用有时包含XML内容的JAXB来编组字符串,有时却不包含?

考虑这个例子 – 我有一个名为Report的类,它有一个Message类型的字段。 Message类有一个名为“body”的字段,它是一个字符串。 “body”可以是任何字符串, 但有时它包含格式正确的XML内容 。 如何确保当“body”包含XML内容时,序列化采用XML结构的forms而不是目前提供的forms? 这是输出的代码 – 报告类 import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = “Report”) @XmlType(propOrder = { “message”}) public class Report { private Message message; public Message getMessage() { return message; } public void setMessage(Message m) { message = m; } } 消息类 import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlType; @XmlType(propOrder = { “body” […]

GSON没有反序列化对外层的引用

在我的Java应用程序中,我定义了两个类,称为A和B ,其中B是A内部类。 两者都被定义为可序列化 public class A implements Serializable { int attrParent; List items = new ArrayList(); public void setAttrParent(int attrParent) { this.attrParent = attrParent; } public int getAttrParent() { return attrParent; } public class B implements Serializable { private int attr; public void setAttr(int attr) { this.attr = attr; } public int getAttr() { return […]

java.io.InvalidClassException:

InvalidClassException:本地类不兼容:stream classdesc serialVersionUID = -196410440475012755,local class serialVersionUID = -6675950253085108747 我在以下场景中使用InvalidClassException进行结构化。 在这里,我的EAR安装在4个Websphere App服务器中,并在此之间共享执行。 有时我从POJO类得到exceptionInvalidClassException,它实现了Serializable接口。 请对此有任何线索。 我对此没有任何线索。

Java序列化,ObjectInputStream.readObject(),检查是否会阻塞

我正在使用ObjectInputStream来调用readObject以读取序列化Objects 。 我想避免使用此方法块,所以我希望使用类似Inputstream.available()东西。 InputStream.available()会告诉你有可用的字节, read()不会阻塞。 是否存在一种等效的串行化方法,它将告诉您是否有可用的Object并且readObject不会阻塞?