0

我在互联网上搜索了我的问题..但我没有找到一个好的解决方案。

我需要在最后显示 json:

我有2节课

class Order {
    Long id;

    Client client;
}

class Client {
    Long id;
}

当我序列化订单时,我得到:

[{"id":1,"client":{"id":1}]

但我想获得:

[{"id":1,"client":1}]

我怎样才能做到这一点?

感谢您的任何解决方案!!!马可

4

4 回答 4

1

-当一个类实现Serializable时,它的对象或它的子类的对象就变成了Serialized

-现在Fields是对象的,而不是被序列化的Object本身。

-并且entire object graph 需要序列化,如果没有序列化失败。

-所以Client在课堂Object Reference VariableOrder会得到序列化,它的Field id也是如此。

-不能序列化字段的属性而不是整个字段,如果您愿意,可以使用关键字防止 Field被序列化。transient

于 2012-10-04T14:36:30.920 回答
1

使用@JsonValue注释:

class Client {
    @JsonValue Long id;
}
于 2012-10-04T21:12:16.100 回答
0

您需要为此类编写自己的序列化方法。

例如检查这个线程:Implementing my own serialization in java

于 2012-10-04T14:35:35.663 回答
0

您也可以尝试 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 编写自定义序列化程序,请参见此处。但在你的情况下,没有必要。

于 2012-10-04T15:04:45.937 回答