Tag: 序列化

Jackson xml空元素序列化

我很难用这个。 Jackson 2.2 XML序列化器似乎以这种方式序列化空对象字段: 如何强制它序列化这样的空字段,如下所示: 非常感谢你的时间和答案。

为什么JTable在渲染时使TableModel不可序列化?

所以最近我在这里为我们开发了一个工具来配置某些应用程序。 它不需要真正棒极了,只需要生成一些SQL脚本的基本工具,并创建几个XML文件。 在此期间,我使用自己的AbstractTableModel实现创建了一系列JTable对象。 在我构建了所有内容之后,我开始使用AbstractTableModel测试保存和加载(仅使用ObjectStreamWriter写入磁盘)序列化失败。 我几乎整天都在弄清楚发生了什么。 当我尝试序列化它们时,我会在java.lang.reflect.Constructor上得到一个NotSerializableException。 我不知道这是什么,因为我的表模型只包含可序列化的实体,我附加的所有监听器也是可序列化的,父类也是可序列化的。 经过大量的挖掘和一些有用的post后,我发现当你将一个TableModelListener添加到一个AbstractTableModel实现时,除了你添加的一个监听器之外还添加了另一个监听器,类型为javax.swing.event.TableModelListener,它不是t serializable(参见http://docs.oracle.com/javase/7/docs/api/javax/swing/event/TableModelListener.html的接口,我不知道实现)。 编辑模型不会添加这个非可序列化的侦听器,JTable会这样做。 我的问题基本上是,为什么这个对象会在内部添加自己的非可序列化对象,从而否定事实上它实际上实现了Serializable? 这是我应该报告的错误吗? 仅供参考我的工作就是简单地删除所有的监听器,序列化,然后重新添加监听器。 反序列化时我只需要添加我创建的那个,模型再次创建另一个。 编辑尝试使用通过调用setValueAt()方法提供的序列化程序类序列化此模型。 import java.io.Serializable; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; public class BlankTableModel extends AbstractTableModel implements Serializable { /** * */ private static final long serialVersionUID = 6063143451207205385L; public BlankTableModel() { this.addTableModelListener(new InnerTableModelListener()); } @Override public void setValueAt(Object o, int x, int […]

将IKVMC生成的对象序列化为JSON

我有一个java库,其中包含我们的后端REST API的所有域模型。 后端API使用Java实现,并使用Jackson将Java对象转换为JSON。 最近,我们需要实现一个新function,并让Windows .NET应用程序与我们的API通信。 但是,由于域模型(契约)都是Java,我们必须将所有Java类转换为C#类,以便我们可以使用Json.NET来序列化/反序列化JSON,但这很快就变得非常耗时。 此外,当Java中的合同发生变化时,我们可能也必须为C#类执行此操作。 我在网上搜索并发现IKVMC可以将jar转换为DLL,所以我试了一下,但是,它导致了一些Json.NET序列化问题。 例如 我有一个看起来像这样的Java对象: public class ApiToken { private String apiKey; private String apiSecret; public String getApiKey() { return apiKey; } public void setApiKey(String apiKey) { this.apiKey = apiKey; } public String getApiSecret() { return apiSecret; } public void setApiSecret(String apiSecret) { this.apiSecret = apiSecret; } @Override public int […]

ClientRequest,如何正确地将POJO序列化为json数据? 找不到内容类型application / json类型的writer:

对于REST服务(RESTeasy),我创建了JUnit测试用例,例如: @Test public void a100_insertAddressTest() throws Exception { Address addr = new Address(1, “testStreet”, “1”, (short) 1234, “testCity”); ClientRequest request = new ClientRequest(BASE_URL + “customerID/{id}”, sslExecutor_schusb); request.body(MediaType.APPLICATION_XML, addr).pathParameter( “id”, 1); ClientResponse response = request.post(String.class); Assert.assertEquals(201, response.getStatus()); response.releaseConnection(); request.clear(); } 如果我将请求正文的媒体类型更改为“application / json”,则测试用例将失败并显示错误: java.lang.RuntimeException: could not find writer for content-type application/json type: at.fhj.ase.dao.data.Address at org.jboss.resteasy.client.ClientRequest.writeRequestBody(ClientRequest.java:469) at […]

序列化循环对象树 – StackOverflowError – 需要自定义序列化代码

我正在制作一个Android应用程序,我有一个双向循环对象树,我需要序列化以填充Sqlite数据库中的blob字段。 但是默认的序列化实现会向我抛出StackOverflowError(底部的堆栈跟踪)。 但是我没有编写自定义java序列化代码的经验来避免这种情况。 我这个线程( 在Java中序列化对象时的StackOverflowError )他谈到了这个问题,但是在我的情况下如何实现它我真的不知道: 可以为这样的列表类定义一个writeObject()方法,当第一个链接被序列化时,只需遍历列表并迭代地序列化每个链接; 这将阻止使用默认的递归机制。 这是我的对象模型(看1 / M,而不是其他标志): 这是我用来将对象模型序列化为字节数组的方法(正确的不那么重要): public byte[] serialize(Object object) { byte[] buf = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = new ObjectOutputStream(bos); out.writeObject(object); out.close(); buf = bos.toByteArray(); } catch (IOException e) { e.printStackTrace(); } return buf; } 自定义序列化function: private void writeObject(java.io.ObjectOutputStream out) throws IOException […]

我序列化对象时的StackOverflowError

我想用这种方法seriliaze一个对象: public void serializ(CRDT m) throws IOException { ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(); ObjectOutputStream stream = new ObjectOutputStream(byteOutput); stream.writeObject(m); sumMemory = byteOutput.size(); stream.flush(); stream.close(); byteOutput.flush(); byteOutput.close(); } 我有一个exceptionjava.lang.StackOverflowError Exception in thread “main” java.lang.StackOverflowError at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1169) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483) […]

如何使用jackson序列化声明性链接(泽西)

我在我的项目中使用声明性链接。 我的jackson映射器配置是 final ObjectMapper mapper = new ObjectMapper(); mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, false); mapper.configure(MapperFeature.AUTO_DETECT_FIELDS, false); mapper.configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false); mapper.configure(MapperFeature.AUTO_DETECT_GETTERS, false); mapper.configure(MapperFeature.AUTO_DETECT_SETTERS, false); mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); mapper.configure(SerializationFeature.INDENT_OUTPUT, true); 因为我已禁用任何类型的自动检测,注入的链接就像 @InjectLinks({ @InjectLink(rel = “bookmark”, resource = ConnectionsResource.class, style = Style.ABSOLUTE_PATH) }) @JsonProperty(“links”) Link[] links; 被序列化为一个空的JSON对象(因为“Link”中的所有字段都没有用@JsonProperty注释)。 如何在不更改全局映射器配置的情况下为字段rel和href启用链接的序列化?

是否有理由使用真正的serialVersionUID?

这个问题与以下内容完全相同: 为什么生成长serialVersionUID而不是简单的1L? 具有讽刺意味的是,Michael Bogswardt也回答道。 Michael Bogswardt对生成serialVersionUID的回答让我思考。 有没有理由生成像eclipse和IDEA(或简单的serialver)这样的正确的serialVersionUID? 或插入1L一样好?

XStream不会调用readObject()

我有这样建模的代码: class A { private transient Foo foo = new Foo(); private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); foo = new Foo(); } } class B extends A {} 我将readObject()添加到A中,以便在反序列化期间,将初始化瞬态foo 。 但是,我在代码中遇到了断点,并且可以看到XStream根本没有调用readObject()。 我也尝试在类B中使用readObject()来调用A中的initFoo()函数,但这也不起作用。 网站上的常见问题解答似乎并不意味着任何其他样板是必要的。 为什么不被召唤?

序列化已经有了id的POJO(java.lang.String)

我有两个实体,我使用spring framework 4.2.5 + jacksonjson 2.7.5将其序列化并发送给客户端。 我的实体如下: @Entity @Table(name = “entrada”) @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property=”idEntrada”) public class EntradaTest implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = “id_entrada”, unique = true, nullable = false) private String idEntrada; @Column(nullable = false, length = 5) private String codigo; private Integer recibidos; @ManyToOne @JsonIdentityReference(alwaysAsId = true) […]