2017-06-07 6 views
0

jsonの戻り値にリストを追加したいとします。ここに私のコードです -JsonObjectの戻り値のjavaリストを追加

@RequestMapping(value = "/servicearea", produces="application/json") 
    @ResponseBody 
    public String ServiceArea(Model model, HttpServletRequest req, HttpServletResponse res) 
    { 

     List<ServiceArea> serviceLists = locationService.getAllServiceArea(); 

     JsonObject result = Json.createObjectBuilder() 
       .add("message", "test") 
       .add("serviceLists", serviceLists) 
       .build(); 

     return result.toString(); 
    } 

'serviceLists'は私が追加したいものです。この行にエラーが表示されます - .add( "serviceLists"、serviceLists)。エラーメッセージは、JsonObjectBuilderが引数に適用できないということです。

ありがとうございます。

+0

まあであなたのコントローラに注釈を付ける、そのようなメソッドのオーバーロードはありません。最初に 'serviceLists'を' JsonArrayBuilder'に変換しようとしてください(それが一番良いのかどうかは分かりませんが、それは聞こえます)。 –

+1

なぜPojoを作成して返すことができないのですか? – pvpkiran

答えて

0

ちょうどあなたがあなたがある場合は解決策の下にはReturnPojo

+0

ありがとうございます。それはとても役に立ちました。 – irengba

0

を返すメソッドシグネチャのみ有効です

ReturnPojo returnPojo = new ReturnPojo; 
returnPojo.setMessage("test"); 
returnPojo.setServiceLists(serviceLists); 

return returnPojo;  

の変更を行うことができ、この

class ReturnPojo { 
    private String message; 
    private List<ServiceArea> serviceLists; 

    //getters and setters 
} 

そして、あなたのコントローラからのようなPOJOを作成しますRest APIとSpringを使用します。

がクラスServiceListPojoを作成します。

public class ServiceListPOJO{ 
List<ServiceArea> serviceLists; 

public void setServiceLists(List<ServiceArea> serviceLists){ 
this.serviceLists = serviceLists; 
} 
} 

@RestController

@RestController 
public class SomeController{ 
@RequestMapping(value = "/servicearea") 
    public ServiceListPOJO ServiceArea() 
    { 
     List<ServiceArea> serviceLists = locationService.getAllServiceArea(); 
     ServiceListPOJO slp = new ServiceListPOJO(); 
     slp.setServciceLists(serviceLists); 
     return slp; 
    } 
}