2

編集: Jersey を使用して提供されるカスタム オブジェクトをマーシャリングしようとしています (私の永続化レイヤーは EclipseLink によって提供されます)。私のコードはすべて正常に動作しますが、サービスを呼び出すときに問題が 1 つあります。これは、キーのない JSON オブジェクトを値だけで返すためです。

JSON を返すには、Jersey を介して利用可能な標準クラスを使用し、モデルに XML 注釈を含めます (JAXB 用)。

オブジェクトのプロパティ名 (キー) を出力する方法を知っている人はいますか?

前もって感謝します!

ジャージー リソース

(...)
@Path("/User")
public class User {
    @GET 
    @Path("/search")
    @Produces(MediaType.APPLICATION_JSON)
     public List<model.User> getUserByNick(@QueryParam("nick") String nick) {
         UserDao u = new UserDao();
         List<model.User> users = u.getUserByNick2(nick);

         return users;
     }
}

Json の結果:

[["test1","active"]]

私のモデルオブジェクトは次のとおりです。

package model;

import java.io.Serializable;
import javax.persistence.*;

import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@Entity
@XmlRootElement(name = "user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private String id;

    @XmlElement
    private byte acceptedconditions;

    @XmlElement
    private String conditionshash;

    @XmlElement
    @Temporal(TemporalType.TIMESTAMP)
    private Date creationdate;

    @XmlElement
    private String email;

    @XmlElement
    private String nick;

    @XmlElement
    private String password;

    //bi-directional many-to-one association to Request
    @XmlElement
    @OneToMany(mappedBy="user")
    private List<Request> requests;

    //bi-directional many-to-one association to Language
    @XmlElement
    @ManyToOne
    @JoinColumn(name="languageid")
    private Language language;

    //bi-directional many-to-one association to Status
    @XmlElement
    @ManyToOne
    @JoinColumn(name="statusid")
    private Status status;

    //bi-directional many-to-one association to Usercompanydata
    @XmlElement
    @OneToMany(mappedBy="user")
    private List<Usercompanydata> usercompanydata;

    public User() {
    }

    public String getId() {
        return this.id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public byte getAcceptedconditions() {
        return this.acceptedconditions;
    }

    public void setAcceptedconditions(byte acceptedconditions) {
        this.acceptedconditions = acceptedconditions;
    }

    public String getConditionshash() {
        return this.conditionshash;
    }

    public void setConditionshash(String conditionshash) {
        this.conditionshash = conditionshash;
    }

    public Date getCreationdate() {
        return this.creationdate;
    }

    public void setCreationdate(Date creationdate) {
        this.creationdate = creationdate;
    }

    public String getEmail() {
        return this.email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getNick() {
        return this.nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public String getPassword() {
        return this.password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public List<Request> getRequests() {
        return this.requests;
    }

    public void setRequests(List<Request> requests) {
        this.requests = requests;
    }

    public Language getLanguage() {
        return this.language;
    }

    public void setLanguage(Language language) {
        this.language = language;
    }

    public Status getStatus() {
        return this.status;
    }

    public void setStatus(Status status) {
        this.status = status;
    }

    public List<Usercompanydata> getUsercompanydata() {
        return this.usercompanydata;
    }

    public void setUsercompanydata(List<Usercompanydata> usercompanydata) {
        this.usercompanydata = usercompanydata;
    }

}
4

0 に答える 0