我在互联网上搜索了我的问题..但我没有找到一个好的解决方案。
我需要在最后显示 json:
我有2节课
class Order {
Long id;
Client client;
}
class Client {
Long id;
}
当我序列化订单时,我得到:
[{"id":1,"client":{"id":1}]
但我想获得:
[{"id":1,"client":1}]
我怎样才能做到这一点?
感谢您的任何解决方案!!!马可
-当一个类实现Serializable
时,它的对象或它的子类的对象就变成了Serialized
。
-现在Fields
是对象的,而不是被序列化的Object
本身。
-并且entire object graph
需要序列化,如果没有序列化失败。
-所以Client
在课堂Object Reference Variable
上Order
会得到序列化,它的Field
id也是如此。
-您不能序列化字段的属性而不是整个字段,但如果您愿意,可以使用关键字防止 Field
被序列化。transient
使用@JsonValue
注释:
class Client {
@JsonValue Long id;
}
您需要为此类编写自己的序列化方法。
您也可以尝试 genson 库http://code.google.com/p/genson/。它具有杰克逊的大部分功能和杰克逊不提供的其他一些不错的功能。
要使用 genson 和少量代码解决您的问题,您可以这样做:
public class Order {
Long id;
@JsonIgnore Client client;
@JsonProperty("client") public Long getClientId() {
return client.id;
}
}
public static class Client {
Long id;
}
System.out.println(new Genson().serialize(order));
如果您愿意,还可以使用 genson 编写自定义序列化程序,请参见此处。但在你的情况下,没有必要。