草庐IT

Pickle反序列化

全部标签

java - Jackson:用于反序列化内部集合的对象映射器注释

我想将下面的json转换成java对象,使用尽可能多的注解。{"user":{"id":1,"diets":[{"diet":{"name":"...","meals":[]}}]}}我在收集饮食方面遇到了麻烦。我尝试使用@JsonProperty但它无法正常工作。map内部聚合是否有特殊注释?Diet.java@JsonRootName(value="diet")publicclassDiet{@JsonProperty(value="name")privateStringname;@JsonProperty(value="meals")privateListmeals;privat

java - 是否可以在没有外部类的情况下序列化匿名类?

我在网上做了一个小调查,并查看了该网站上的相关主题,但答案是矛盾的:有人说不可能,有人说可能,但很危险。目标是传递一个匿名类的对象作为RMI方法的参数。由于RMI要求,此类必须是可序列化的。没问题,很容易使类可序列化。但我们知道内部类的实例持有对外部类的引用(匿名类是内部类)。因此,当我们序列化内部类的实例时,外部类的实例和字段一起被序列化。这是问题出现的地方:外部类不可序列化,更重要的是-我不想序列化它。我想做的只是发送匿名类的实例。简单示例-这是一个RMI服务,其方法接受Runnable:publicinterfaceRPCService{Objectcall(Serializab

java - 如何用 Jackson 序列化 LocalDateTime?

我得到了以下代码:ObjectMappermapper=newObjectMapper();mapper.registerModule(newJavaTimeModule());mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);Stringnow=newObjectMapper().writeValueAsString(newSomeClass(LocalDateTime.now()));System.out.println(now);我明白了:{"time":{"hour":20,"minute":49,"s

java对象序列化readObject/defaultReadObject

ObjectInputStream类中的readObject和defaultReadObject有什么区别?我似乎找不到太多关于差异的信息。 最佳答案 defaultReadObject()调用默认的反序列化机制,并在您在Serializable类上定义readObject()方法时使用。换句话说,当你有自定义反序列化逻辑时,你仍然可以回到默认序列化,这将反序列化你的非静态、非transient字段。例如:publicclassSomeClassimplementsSerializable{privateStringfld1;pri

java - jackson 根据类型反序列化

假设我有以下格式的JSON:{"type":"Foo""data":{"object":{"id":"1""fizz":"bizz"...},"metadata":{...},"owner":{"name":"John"...}}}我试图避免自定义反序列化器并尝试将上述JSON(称为Wrapper.java)反序列化为JavaPOJO。“类型”字段指示“对象”反序列化,即。type=foo表示使用Foo.java反序列化“对象”字段。(如果type=Bar,则使用Bar.java反序列化对象字段)。元数据/所有者将始终使用一个简单的Jackson注释Java类以相同的方式反序列化每个。

java - jackson JSON 反序列化 : array elements in each line

我正在使用Jackson并希望漂亮地打印JSON,以便数组中的每个元素都进入每一行,例如:{"foo":"bar","blah":[1,2,3]}设置SerializationFeature.INDENT_OUTPUTtrue只为对象字段插入换行符,而不是数组元素,而是以这种方式打印对象:{"foo":"bar","blah":[1,2,3]}有人知道怎么实现吗?谢谢! 最佳答案 如果您不想扩展DefaultPrettyPrinter,您也可以在外部设置indentArraysWith属性:ObjectMapperobjectMap

java - 使用 xstream 反序列化一个 json 数组

stackoverflow上有很多关于如何使用Gson反序列化json数组的信息。但是我如何使用带有jettison的XStream来做同样的事情呢?这里是json:{"entity":[{"id":"1","name":"aaa"},{"id":"2","name":"bbb"}]}这是我如何尝试解析它的XStream代码:XStreamxstream=newXStream(newJettisonMappedXmlDriver());xstream.alias("entity",Entity[].class);return(Entity[])xstream.fromXML(jsonS

java - 为什么 ObjectOutputStream.writeObject 不采用可序列化?

为什么ObjectOutputStream.writeObject(Objecto)不带Serializable?为什么它需要一个Object? 最佳答案 这是因为ObjectOutputStream中的writeObject覆盖了themethod在theObjectOutputinterface它不要求对象是Serializable。ObjectOutput接口(interface)指定允许将对象写入流或底层存储的方法,但这可以通过序列化以外的过程来实现。ObjectOutputStream实现了这个功能,但需要可序列化的对象。

java - 如何不序列化继承的非 transient 字段?

问题我有一个带有非transientboolean字段的可序列化类(我们称它为A),以及一个子类(B),该类的同一字段应该是transient的。我该怎么做?更准确地说,我希望在反序列化B时将字段恢复为默认boolean值(false),尽管我希望在反序列化A时将其恢复为正确的值。其他字段尽管如此,还是应该恢复从A继承的。在功能上,A代表一个在session之间恢复的对象,B是A的特定类型,其状态应在每个新session上重置。快速代码示例:publicclassAimplementsjava.io.Serializable{privateStringlabel;//non-trans

java - Jackson JSON - 反序列化 Commons MultiMap

我想使用JSON序列化和反序列化MultiMap(ApacheCommons4)。测试代码:MultiMapmap=newMultiValueMap();map.put("Key1","Val11");map.put("Key1","Val12");map.put("Key2","Val21");map.put("Key2","Val22");ObjectMappermapper=newObjectMapper();StringjsonString=mapper.writeValueAsString(map);MultiMapdeserializedMap=mapper.readVal