2016-07-02 2 views
0
@GET @Path("/ids/{printerid}") 
@Produces({"application/json", "application/xml"}) 
public Printer getPrinter(@PathParam("printerid") String printerId) { ... } 

является частью примера кода здесь: https://jersey.java.net/documentation/latest/jaxrs-resources.html#d0e2089Возвращение XML/JSON в Джерси

Что я понимаю:

  • метод getPrinter вызывается, когда HTTP method GET называется на путь /ids/{printerid}
  • метод Produces либо a json, либо xml результат
  • метод возвращает Object типа принтера, идентифицированный ID представленной в URI

на что я не понимаю, как возвращаемый принтер представлен в качестве xml/json документа. Мы возвращаем принтер в этот метод, так как мы можем получить файл xml/json?

ответ

2

В этом вся идея контроллера уровня Jersy/Spring, они инкапсулируют его и преобразуют класс в JSON. Вы можете иметь один и тот же результат с Gson

Gson gson = new Gson(); 
String json = gson.toJson(printerObject); 
System.out.println(json); 

Не уверен, что если Jersy использует Gson, но логика будет, вероятно, то же самое

+0

Ok. Насколько я понимаю, мне не нужно ничего делать для самого преобразования. Теперь предположим, что я вызываю метод, который создает XML, как его отображать в клиенте (браузере) в моем случае. Когда я вызываю метод, ничего не отображается – user6454491

+1

Проверьте сетевую консоль веб-браузера, проверьте тело ответа или используйте скрипач, чтобы узнать, какие данные вы получаете с сервера, и убедитесь, что вы правильно его разобрали. – USer22999299

+1

спасибо. Кажется, что есть внутренняя ошибка сервера. По крайней мере, я смутно знаю, где я должен смотреть сейчас – user6454491

2

При запросе на обслуживание от Clien стороны вы всегда упоминается тип контента там который указывает ответ, принятый в xml или json.

$http({ 
     method: "GET", 
     contentType: "application/json", 
     url: baseUrl + '/xyz' + id 
     }).success(function (response) { 
     console.log(response); 
     // you can also use 
     console.log(JSON.stringify(response); 
     }).error(function (response) { 
     console.log(response); 
     }); 
0

Основание на «Content-type» в запросе, трикотаж будет определять представление.

Существует множество фреймворков, которые обеспечивают поддержку представления xml/json для трикотажа. Джексон и JAXB являются очень популярными и эффективными структурами для обработки JSON и XML в трикотаже.

Посмотрите официальную документацию Джерси для различных структур: https://jersey.java.net/documentation/latest/media.html

Вы можете найти множество статей, связанных с XML и поддержку JSON в джерси здесь:
http://www.mkyong.com/tutorials/jax-rs-tutorials/

Смежные вопросы