Джерси не отменяет универсальный тип Java - PullRequest
3 голосов
/ 27 мая 2011

Я хотел бы иметь службу, которая отвечает на запросы POST на / contact со следующей полезной нагрузкой:

{"records":[{"firstname":"John","lastname":"Doe"}]} 

В идеале, записи должны быть оберткой для всех типов типов: контакт, заказ и т. Д.Вот почему я хотел бы использовать универсальный тип, но Джерси, кажется, не в состоянии разобрать его.Вот мой код:

@Controller
@Path("/contact")
public class ContactResource {

@Autowired
private ContactService contactService;

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public List<Contact> saveContact(final Records<Contact> contact) {
    return Arrays.asList(contactService.saveContact(contact.records.get(0)));
}
}


@XmlRootElement
public class Records<T> {
    public List<T> records;
}

Кажется, что использование пользовательского javax.ws.rs.ext.MessageBodyReader может решить мою проблему.Правильно?

1 Ответ

1 голос
/ 28 июня 2011

Похоже, что вы используете натуральное кодирование JSON - чтобы иметь возможность его обрабатывать, вы должны настроить Джерси, как описано здесь .

В некоторых @PostConstruct в одном из ваших одноэлементных компонентов, используемых для конфигурации, включите следующий вызов:

JSONConfiguration.natural().build();
...