0

私は自分の問題についてインターネットで検索しましたが、良い解決策が見つかりませんでした。

最後にjsonを表示する必要があります:

私は2つのクラスを持っています

class Order {
    Long id;

    Client client;
}

class Client {
    Long id;
}

Orderをシリアル化すると、次のようになります。

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

しかし、代わりに次のものを取得したいと思います。

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

どうすればこれに到達できますか?

解決策をありがとう!!! マルコ

4

4 に答える 4

1

-クラスがを実装するSerializableと、そのオブジェクトまたはそのサブクラスのオブジェクトがになりますSerialized

-これで、シリアル化されるオブジェクト自体ではなくFieldsオブジェクトのオブジェクトになります。Object

-シリアル化が失敗しない場合は、シリアル化するentire object graph 必要があります。

-したがってClient、クラスに含まれているとSerializeが取得され、そのIDObject Reference Variableも取得されます。OrderField

-フィールド全体ではなくフィールドのプロパティをシリアル化することはできません、必要に応じて、キーワードを使用してシリアル化されないよう にすることができます。Fieldtransient

于 2012-10-04T14:36:30.920 に答える
1

@JsonValue注釈を使用する:

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

このクラスには独自のシリアル化メソッドを作成する必要があります。

たとえば、次のスレッドを確認してください: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 に答える