2016-10-20 2 views
0

私のREST Webサービスにはjacksonを使用してJSONを作成しています。1つのJSONにクラスの特定のフィールドをグループ化し、別のJSONに他のフィールドをグループ化する方法

Iは、以下のようなクラスを持っている -

のFooクラス -

public class Foo extends Bar { 
     private String id; 
     private String name; 
     private List<Test> testing; 
    } 

バークラス -

public class Bar { 
     private String username; 
    } 

テストクラス -

public class Test { 
     private String id; 
     private String desc; 
    } 

所望JSON出力私はあくまでも次のように電子がある -

{ 
    "username" : "ABC", 
    "data": { 
      "id" : "123". 
      "name" : "XYZ" 
      } 
    "testing" : [ 
       { 
        "id" : "test1", 
        "desc" : "description1" 
       } 
       ] 
} 

私はすべての可能なannotationsをしようとしただけで、特定のフォーマットでJSONを作成するためのWrapperクラスを作成しないようにしたいです。 クラスFooは、ゲッターとセッターを使用してデータベースから取り込まれます。

注 - 私は問題にハックする他の方法を試すのではなく、ラッパークラスを作成することが容易であることを示唆しているjackson

+0

あなたが尋ねていることは明確ではありません。あなたが投稿したもののように見えるJSONを望んでいて、それを生成するクラスを作成する必要がありますか? – rmlan

+0

FooクラスからJSON出力を取得したいとします。 – JHS

答えて

0

に新しいです。そして、あなたのコードは次のように行くことができる

public class WrapperClasss { 

private String val; 

public String getVal() { 
    return val; 
} 
public void setVall(String val) { 
    this.val = val; 
} 
} 

@Path("/path") 
public class SomeWebService { 
    @POST 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    public ResponseObject getRegister(WrapperClasss wrapperClasss) { 
     MainClass classs = new MainClass(); 
     ResponseObject responseObject = classs.someMethod(wrapperClasss.getVal()); 
     return responseObject; 
    } 

} 

それすなわち あなたは次のように、入力を取るためにラッパークラスを作成することができます。 Response Objectは、あなたの出力を含むオブジェクトに過ぎません。それはジャクソンによってJSONに変換されます。

public class ResponseObject{ 
    private String username; 
    Data data; 
    private List<Test> testing; 

    //respective getter and setters 
} 
関連する問題