spring mvc rest response json и xml

У меня есть требование вернуть результат из базы данных в виде строки в xml-структуре или как json-структуру. У меня есть решение, но я не знаю, лучший ли способ его решить. У меня есть два метода:

@RequestMapping(value = "/content/json/{ids}", method = RequestMethod.GET)
public ResponseEntity getContentByIdsAsJSON(@PathVariable("ids") String ids)
{
  String content = null;
  StringBuilder builder = new StringBuilder();
  HttpHeaders responseHeaders = new HttpHeaders();
  responseHeaders.add("Content-Type", "text/html; charset=utf-8");
  // responseHeaders.add("Content-Type", "application/json; charset=utf-8");

  List list = this.contentService.findContentByListingIdAsJSON(ids);
  if (list.isEmpty())
  {
     content = "no data  found";
     return new ResponseEntity(content, responseHeaders, HttpStatus.CREATED);
  }
  for (String json : list)
  {
     builder.append(json + "\n");
  }
  content = builder.toString();
  return new ResponseEntity(content, responseHeaders, HttpStatus.CREATED);
}

@RequestMapping(value = "/content/{ids}", method = RequestMethod.GET)
public ResponseEntity getContentByIdsAsXML(@PathVariable("ids") String ids)
{
  HttpHeaders responseHeaders = new HttpHeaders();
  responseHeaders.add("Content-Type", "application/xml; charset=utf-8");

  String content = this.contentService.findContentByListingIdAsXML(ids);
  if (content == null)
  {
     content = "no data found";
     return new ResponseEntity(content, responseHeaders, HttpStatus.CREATED);
  }
  return new ResponseEntity(content, responseHeaders, HttpStatus.CREATED);
}

для первого метода мне нужно лучшее решение, о котором я уже спрашивал здесь: spring mvc rest mongo dbobject response

Следующее, что я вставил в конфигурацию конвертер json:


   

когда я меняю тип содержимого в первом методе на «application / json», он работает , но тогда ответ xml больше не работает, потому что конвертер json хочет преобразовать строку xml в структуру json, я думаю.

что я могу сделать, эта пружина определяет разницу в том, что один метод должен возвращать json типа, а другой - обычный xml в виде строки? Я попробовал это с флагом принятия:

@RequestMapping(value = "/content/json/{ids}", method = RequestMethod.GET, headers = "Accept=application/json")

, но это не сработало. Я получаю следующую ошибку:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.StackOverflowError

Я надеюсь, что кто-нибудь может мне помочь.

13
задан ROMANIA_engineer 24 August 2017 в 21:00
поделиться