2014-02-13 4 views
2

Я только что взял урок в Spring.io http://spring.io/guides/gs/rest-service/ и создал простой сервис для отдыха. Но знает ли кто-нибудь, как я могу вернуть несколько объектов в формате JSON? Если у меня, например, есть класс человека с именем и идентификатором, как я могу добавить трех человек в/лиц?Spring restful webservice return JSON

+0

как насчет JSONArray? –

ответ

7

Вы можете использовать @ResponseBody аннотацию и просто вернуть все, что вы хотите, при условии, что эти объекты могут быть jsonized.

Например, вы можете иметь боб, как это:

@Data 
public class SomePojo { 
    private String someProp; 
    private List<String> someListOfProps; 
} 

, а затем в контроллере вы можете иметь:

@ResponseBody 
@RequestMapping("/someRequestMapping") 
public List<SomePojo> getSomePojos(){ 
    return Arrays.<String>asList(new SomePojo("someProp", Arrays.<String>asList("prop1", "prop2")); 
} 

и Spring по умолчанию будет использовать его Джексона картографа, чтобы сделать это , поэтому получите ответ вроде:

[{"someProp":"someProp", "someListOfProps": ["prop1", "prop2"]}] 

То же самое можно связать с некоторыми объектами, но t его время, используя аннотацию @RequestBody, где Джексон будет использоваться на этот раз, чтобы предварительно преобразовать json для вас.

, что вы можете сделать, это

@RequestMapping("/someOtherRequestMapping") 
public void doStuff(@RequestBody List<SomePojo> somePojos) { 
    //do stuff with the pojos 
} 
+0

Довольно круто! Это сработало =) Im очень новое к весне и всей идее отдыха. Знаете ли вы хорошие учебные пособия по этому вопросу? Мне нужно получить json, который выглядит примерно так: [ {"id": 0, "name": "Sancho Panza"}, {"id": 1, "name": "Man Mansen" }, {"id": 2, "name": "Heman matt"} ] – fuLLMetaLMan

+1

Затем сделайте список этих ребят и верните его :) –

+0

Хе-хе, да. Я был немного не уверен, потому что, когда я попробовал, он не работал. Но теперь это так. Малая синтаксическая ошибка. Спасибо! Работает как шарм: D – fuLLMetaLMan

1

Попробуйте возвращать список из метода:

@RequestMapping("/greetings") 
public @ResponseBody List<Greeting> greetings(
     @RequestParam(value="name", required=false, defaultValue="World") String name) { 
    return Arrays.asList(new Greeting(counter.incrementAndGet(),String.format(template, name))); 
} 
Смежные вопросы