我在互联网上搜索过我的问题..但我没有找到一个好的解决方案。
我需要在最后显示json:
我有2个班级
class Order {
Long id;
Client client;
}
class Client {
Long id;
}
当我序列化订单时,我得到:
[{"id":1,"client":{"id":1}]
但我想要获得:
[{"id":1,"client":1}]
我怎么能达到这个目标?
感谢您的任何解决方案! 马可
答案 0 :(得分:1)
- 当一个类实现Serializable
时,其对象或其子类的对象将成为Serialized
。
- 现在是对象的Fields
,不正在序列化的Object
本身。
- 如果没有序列化失败,则序列化entire object graph
需要。
- 因此Client
成为Object Reference Variable
类中的Order
将获得序列化,其Field
ID {强>
- 您无法序列化字段而非整个字段属性但如果您希望阻止Field关键字序列化> transient
。
答案 1 :(得分:1)
使用@JsonValue
注释:
class Client {
@JsonValue Long id;
}
答案 2 :(得分:0)
您需要为此类编写自己的序列化方法。
答案 3 :(得分:0)
您也可以尝试genson library 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编写自定义序列化程序,请参阅here。但在你的情况下,没有必要。