Tag: 序列化

如何通过保留密钥的数据类型将json序列化到另一个json?

我有我原来的JSON字符串,其中我有键和值,如下所示 – { “u”:{ “string”:”1235″ }, “p”:”2047935″, “client_id”:{ “string”:”5″ }, “origin”:null, “item_condition”:null, “country_id”:{ “int”:3 }, “timestamp”:{ “long”:1417823759555 }, “impression_id”:{ “string”:”2345HH*” }, “is_consumerid”:true, “is_pid”:false } 例如,一个键是”u” ,其值为 – { “string”:”1235″ } 同样,另一个关键是”country_id” ,其值为 – { “int”:3 } 现在我需要做的是,我需要代表键值对,如下所示。 如果任何值是字符串数据类型(如键u的值),则用双引号表示它的值,否则不用双引号表示它的值。 country_id的含义值不在String双引号中,因为它是int。 “u”: “1235” “p”: “2047935” “client_id”: “5” “origin”:null “item_condition”:null “country_id”: 3 // I don’t have double quotes […]

如何在Java中锁定序列化?

我刚开始使用Java序列化:我有一个练习要做,我需要锁定任何类的序列化,我想在我尝试序列化该类时抛出exception。 有谁知道怎么做?

序列化逻辑应该在实体还是其他类中

应该在何处放置对象序列化逻辑(字段到XML或JSON名称和值的映射)? 在每个实体对象内部或者只是与序列化有关的一组不同的类? 那个与这个问题有关的其他最佳实践? 例如: class Person { String name; } 有些人这样做: class Person { String name; public String toJson () { // build JSON, use ‘name’ field } } 但是,如果我们还需要XML(),toCSV(),toXYZ()保持这个方向将创建可怕的污染代码并打破单一责任原则,即使使用单个toJson方法,恕我直言也已经破坏了。 另一种选择,这就是我通常做的事情: interface Serializer { public String toJson (); } class PersonJsonSerializer implements Serializer { private Person p; public PersonJsonSerializer (Person p) { this.person = p; […]

Java:如何使这个Serializable?

我需要以下类是Serializable。 package helpers; public class XY implements Comparable { public int x; public int y; public XY (int x, int y) { this.x = x; this.y = y; } public int compareTo( XY other ) { String compare1 = this.x + “-” + this.y; String compare2 = other.x + “-” + other.y; return compare1.compareTo( compare2 […]

Fasterxml Jackson自动将非布尔值转换为布尔值

我有一个pojo类,其中一个标志isControl是Boolean类型。 当此属性获得非布尔值而不是true or false fastxml jackson会自动将输入值转换为true 。 经过几个小时的调试后,我发现这是在setter方法setIsControl发生的。 如果此属性的输入值是非布尔值,我想传递自定义消息。 我编写了自己的注释来validation此属性的输入值,如果它不是布尔值,则返回自定义消息,但jackson在检查我的自定义validation器之前绑定该值。 使用jackson版>>> 2.6.3 。 任何帮助将不胜感激。 Control.java @JsonProperty(required = true) @NotNull(message = “isControl cannot be null”) private Boolean isControl; public Boolean getIsControl() { return isControl; } @CheckBoolean(fieldName = “isControl”) public void setIsControl(Boolean isControl) { this.isControl = isControl; } public class BooleanValidator implements ConstraintValidator { private String fieldName; […]

Java部分(de)对象序列化

假设我们有3个类: class foo { // not a singleton String s; } class bar { foo f; int i; } class baz { foo sameF; } 现在我们创建实例 foo onlyFoo = new foo(“the only one”); bar theBar = new bar(onlyFoo, 123); baz theBaz = new baz(onlyFoo); 之后我们想将它们串行存储在一个文件中。 如果我们反序列化theBaz,修改onlyFoo并再次将theBaz反序列化为该文件,theBar仍包含原始的onlyFoo,因此有两个不同版本的onlyFoo。 我想要的是我存储theBaz和theBar 而不仅仅是Foo,分别存储三个对象,一旦有人反序列化了Baz我也想给他只有.Foo。 如果他再次对已更改的onlyFoo进行反序列化,则theBaz 和 theBar将具有相同的仅修改过的对象,因此如果有人请求对象(例如theBar),则会获得包含所有引用对象(onlyFoo)的完整序列化对象,就像正常的序列化过程将返回。 我知道我必须存储对象并手动和单独保存引用,因为默认序列化无法处理此问题。 我不知道的是如何部分序列化/反序列化Java对象? 我需要将原语及其包装器与“更高”的对象分开,并分别存储这些对象。 更新 […]

如何使用JAXB设置默认命名空间

我有一个通过Spring MVC Web服务返回的数据的ATOM-XML表示。 我正在使用JAXB进行序列化,我有许多名称空间但我希望默认名称空间设置为Atom而没有前缀。 这是我目前在package-info.java拥有的,但primefaces前缀被设置为ns3。 @XmlSchema(namespace = com.mycomponay.foo.ATOM_NAMESPACE, xmlns = { @XmlNs(prefix = “foo”, namespaceURI = com.mycomponay.foo.NAMESPACE_FOO), }, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package com.mycompany.web; import javax.xml.bind.annotation.XmlNs; 另外我注意到命名空间显示在chrome中但不在Firefox中显示。

为什么Java Swing可序列化?

当我为远程用户创建Swing应用程序时,我只是创建jar文件并创建一个WebStart文件,让用户下载应用程序然后运行它。 我还没有听说过提供JFrame等的应用程序服务器,比如JSP。 这是原意吗?

XStream序列化空值

假设我有 class Student { String name; int age; String teacher; } 然后 : public class App1 { public static void main(String[] args) { Student st = new Student(); st.setName(“toto”); XStream xs = new XStream(); xs.alias(“student”,Student.class); System.out.println(xs.toXML(st)); } } 给我 : toto 0 有没有办法处理空值? 我的意思是 : toto 0 如果我这样做可能 st.setTeacher(“”); 但如果老师是空的,那就没有。 我尝试使用自定义转换器,但似乎空值不会发送到转换器。

JSON – 无法使用Jackson在Object中序列化JSONObject

我有以下课程: class A{ String abc; String def; // appropriate getters and setters with JsonProperty Annotation } 我称Jacksons objectMapper.writeValueAsString(A)工作正常。 现在我需要添加另一个实例成员: class A{ String abc; String def; JSONObject newMember; // No, I cannot Stringify it, it needs to be JSONObject // appropriate getters and setters with JsonProperty Annotation } 但是当我序列化时,我会遇到exception: org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.json.JSONObject […]