Услуги Джерси Отдых - есть ли способ ограничить и заказать XMLElements в ответе?

У меня есть служба REST, которая выводит список POJO. Ответ XML/JSON содержит все поля, отмеченные XMLElement. Есть ли способ ограничить поля в ответе (программно во время выполнения)? Также я могу указать порядок полей снова во время выполнения?

POJO:

 @XmlRootElement
 @XmlAccessorType(XmlAccessType.NONE)
 public class Employee {
    @XmlElement
    @Column(name="Name", length=75) @NotNull @Length(max=75)        
    private String name;   

    @XmlElement
    @Column(name="designation", length=75)       
    private String designation;   

    @XmlElement
    @Column(name="department", length=75)        
    private String department;   
}

@Path("employee")
public class EmployeeRestService {
    @GET
    @Path("json")
    @Produces(MediaType.APPLICATION_JSON)
    public Response emp() {
        return Response.ok(getDetails(), MediaType.APPLICATION_JSON).build();;
    }

    @Path("xml")
    @Produces(MediaType.APPLICATION_XML)
    public Response emp() {
        GenericEntity<List<Employee>> list = new GenericEntity<List<Employee>>(getDetails()) {};
        return Response.ok(list, MediaType.APPLICATION_XML).build();;
    }

    public List<Employee> getDetails() {
        .....
        return list;
    }
}

My output now is:
JSON:
[{name:Tom,designation:Manager,department:IT},{name:Jim,designation:Clerk,department:IT}]
XML:
<employees>
    <employee>
      <name>Tom</name>
      <designation>Manager</designation>
      <department>IT</department>
    </employee>
    <employee>
      <name>Jim</name>
      <designation>Clerk</designation>
      <department>IT</department>
    </employee>
</employees>

Desired output:
JSON:
[{designation:Manager,name:Tom},{designation:Clerk,name:Jim}]
XML:
<employees>
    <employee>
      <designation>Manager</designation>
      <name>Tom</name>
    </employee>
    <employee>
      <designation>Clerk</designation>
      <name>Jim</name>
    </employee>
</employees>

Поля и порядок будут известны только при подаче запроса. Поэтому аннотации типа JSONIgnore мне не помогут. Как мне это сделать? Я попробовал Дженсона. Хотя я могу ограничить поля в ответе JSON, я не смог сделать это для ответа XML. Также я не могу заказать поля.

1 ответ

Для настройки вашего индивидуального заказа вы можете использовать:

@XmlType (propOrder = {"обозначение", "имя", "отдел", "abcd"})

Другие вопросы по тегам