Сериализатор для (Хэш )Карты для использования в Джерси?

Я пытаюсь отправить следующую полезную нагрузку в мой веб-сервис на основе Джерси -:

{
    "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 не помог, хотя и подавал большие надежды.

6
задан Community 23 May 2017 в 12:23
поделиться