Tag: 序列化

Java序列化库不需要no-arg构造函数和Serializable的实现

在java-world中是否有任何方法可以序列化而不需要no-arg构造函数和Serializable的实现?

如何在自定义反序列化器中使用一些Jackson Deserializer?

我正在努力解决问题中提到的问题。 我需要创建一些自定义反序列化器,它或多或少是标准反序列化器的类型转换(原因是ZonedDateTime适用于我的输入,但我不想将类型更改为ZonedDateTime ,但保留LocalDateTime )。 基本上我想在我的解串器中做的是: 使用ZonedDateTime反序列化器反序列化(我发现,实际上是自定义的InstantDeserializer ) 使用.toLocalDateTime并返回它。 我怎么用呢? 试图找到它,但我不能。

为什么在反序列化过程中不调用默认构造函数?

ObjectInputStream is = new ObjectInputStream(new FileInputStream(“test.ser”)); TestClass tc = (TestClass)is.readObject(); 我在反序列化后得到了TestClass的对象,但是没有调用TestClass的默认构造函数。 根据我的理解,有两种方法可以创建对象,即使用new运算符或TestClass.class.newInstance()。 两者都调用默认构造函数。 看起来像反序列化过程创建对象不是用两个方法,这就是为什么不调用默认构造函数。 问题是反序列化如何创建对象? 另一点是,如果TestClass扩展BaseTestClass并且BaseTestClass没有实现序列化,则调用BaseTestClass的构造函数但不调用TestClass。 为什么这样 ? 我相信它背后会有一些合理的理由。 但我没有得到它?

使JsonNode可序列化

这似乎很简单,但我没有得到序列化的JsonNode反序列化。 这是我的测试课 import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class Foo implements Serializable { private String string; private transient JsonNode jsonNode; public Foo(String string, JsonNode jsonNode) { this.string = string; this.jsonNode = jsonNode; } private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); if (this.jsonNode != null) out.writeObject((new ObjectMapper()).writeValueAsBytes(this.jsonNode)); // […]

如何在Array google-gson中反序列化Array

我有这样的JSON: { “Answers”: [ [ {“Locale”:”Ru”,”Name”:”Name1″}, {“Locale”:”En”,”Name”:”Name2″} ], [ {“Locale”:”Ru”,”Name”:”Name3″}, {“Locale”:”En”,”Name”:”Name4″} ] ] } 如您所见,我在数组中有数组。 如何使用Android上的google-gson库将此类JSON结构反序列化为对象( https://code.google.com/p/google-gson/ )?

序列化 – 如何保护序列化的JAVA对象?

如果通过网络发送序列化对象,如何保护序列化对象? 我怀疑黑客可能会打断/破解我的数据。 任何人都可以详细说明如何实现这个?

将数据结构从java传递给perl(反之亦然)

几天前我问过将数据结构从java传递给perl,反之亦然,其中一个recos是JSON。 我玩它(主要使用Gson for java),看起来相当不错。 唯一的问题是我在我的数据结构中有引用(对于同一数据结构中的其他对象)。 目前,每个这样的引用都被“完全翻译”,所以实际上每个对象都被重复多次,并且你不能告诉所有那些指向同一个对象的引用。 有没有办法将信息从java传递给per,反之亦然,最好是以人类可读的格式,这也保留了有关引用的数据而不是重复值?

Spring在@RequestBody中反序列化一个LocalDate与@RequestParam中的一个不同 – 为什么,它们可以相同吗?

问题:Spring似乎对LocalDate使用不同的反序列化方法,具体取决于它是出现在@RequestBody还是请求@ReqestParam – 这是否正确,如果是这样,有没有办法在整个应用程序中将它们配置为相同? 背景:在我的@RestController ,我有两个方法 – 一个GET和一个POST。 GET需要一个LocalDate类型的请求参数(“date”); POST需要一个JSON对象,其中一个键(“date”)的类型为LocalDate 。 他们的签名类似于以下内容: @RequestMapping(value = “/entity”, method = RequestMethod.GET) public EntityResponse get( Principal principal, @RequestParam(name = “date”, required = false) LocalDate date) @RequestMapping(value = “/entity”, method = RequestMethod.POST) public EntityResponse post( Principal principal, @RequestBody EntityPost entityPost) public class EntityPost { public LocalDate date; } 我已经按如下方式配置了我的ObjectMapper: @Bean public […]

ArrayList无法强制转换为自定义类扩展ArrayList

我有下面提到的课程: public class JsonHistoryList extends ArrayList implements Serializable{} 我希望通过意图使用它 timerService.putExtra(TimerService.ACTIVITY_LIST_ARG, activities); 但在我收到它之后(下面的方式) JsonHistoryList temp = (JsonHistoryList) intent.getSerializableExtra(TimerService.ACTIVITY_LIST_ARG); 在我的服务中它给了我例外: Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to com.epstim.captime.jsonmodel.JsonHistoryList 我不明白为什么java无法处理该操作。 我已将服务代码更改为: ArrayList temp = (ArrayList) intent.getSerializableExtra(TimerService.ACTIVITY_LIST_ARG); activities.addAll(temp); 它奏效了。

为什么gson不允许java.lang.Class的序列化?

如果您尝试序列化具有java.lang.Class类型字段的对象,则序列化将导致java.lang.UnsupportedOperationException: Attempted to serialize java.lang.Class: Forgot to register a type adapter 以下是com.google.gson.internal.bind.TypeAdapters.java中的代码段 public final class TypeAdapters { . . . public static final TypeAdapter CLASS = new TypeAdapter() { @Override public void write(JsonWriter out, Class value) throws IOException { if (value == null) { out.nullValue(); } else { throw new UnsupportedOperationException(“Attempted to serialize java.lang.Class: ” […]