Я пытаюсь отправить следующую полезную нагрузку в мой веб-сервис на основе Джерси -:
{
"firstname":"Jimmy",
"lastname":"Johns",
"addresses":
[
{
"street":"19 Mayberry Drive",
"city":"Mayberry",
"state":"nc",
"postalcode":"27043",
"country":"us",
"addresstype":1
}
],
"data":
{
"eyes":"blue",
"hair":"brown",
"sandwich":"roast beef"
}
}
Мой код Джерси:
@POST
public Response create( Person person )
{
createBo( person ); <------- stopped here in debugger
...
Остановившись как раз в тот момент, когда мне звонит Джерси, я вижу адреса в person выделенные именно тем, что я ищу (что в JSON выше ). Однако моих кортежей данных там нет. Я знаю, что Джерси вызывает мой конструктор no -arg для Address es, и его сеттеры вызываются, но я не сплю в ночи, поскольку Джерси может или не может пытаться делать с эти случайные ("данные" )кортежи в моем JSON. (Я говорю «случайный», потому что в другом заклинании это может быть «пещера» :«глубокая, темная», «гора» :«высокая, широкая» и т. д. Это неотъемлемая часть моего интерфейс.)
Чтобы конкретизировать то, о чем я говорю,рассматривайте эти POJO как контекст для вышеупомянутого:
@XmlAccessorType( XmlAccessType.FIELD )
@XmlRootElement
public class Person implements Serializable
{
@XmlElement
private List< Address > addresses = new ArrayList< Address >();
@XmlElement
private Map< String, String > data = new HashMap< String, String >();
...
@XmlRootElement
public class Address implements Serializable
{
private String street;
private String city;
private String state;
private String country;
private String postalcode;
private Integer addresstype;
...
Примечание. :Я не могу создавать случайные кортежи, как я делал Адрес , потому что я на самом деле заранее не знаю, какие будут ключи (, тогда как я ограничиваю Адрес . до улица , город и т. д. ).
Что мне нужно, так это какой-то волшебный сериализатор для HashMap s в Джерси, и я не могу достаточно хорошо интерпретировать документы, чтобы понять, как написать его или обойти эту проблему, сохраняя при этом гибкость моего интерфейса.
Я был бы признателен за любые указания относительно того, как это сделать.
Расс Бейтман
P.S. К сожалению, обратите внимание, что Java.util.Map to JSON Object with Jersey/JAXB/Jackson не помог, хотя и подавал большие надежды.