猿问

Java / Jackson - “无法识别的令牌”传递 JSON 对象参数

带有 Jersey / Jackson 的 Java JAX-RS Web 服务,一个服务方法需要一个用户参数 (POJO) 作为 JSON。客户端应用程序 (Angular 6) 发送包含用户参数(序列化为 JSON)的 POST 请求。服务方法调用失败并显示错误消息:“无法识别的令牌 'jsonUser': was expected ('true', 'false' or 'null')”。


这是 User 类 (POJO) - 您可以看到我尝试使用 @JsonProperty 注释所有属性,但这是不必要的,因为我没有“重命名”它们:


import java.io.Serializable;


import javax.ws.rs.FormParam;


import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

import com.fasterxml.jackson.annotation.JsonProperty;


//import org.glassfish.jersey.media.multipart.FormDataParam;


/**

 * JavaBean for passing the User properties between the UI app (Angular) 

 * and TearsWs. Implementation requires this to be serializable (JSON).

 */

@JsonIgnoreProperties({ "DELIM" })

public class User implements Serializable {

    private String userName;

    private String employeeId;

    private String employeeName;

    private String homeUnitCode;

    private boolean certifier;

    private HomeUnit[] tkHomeUnits;

    private boolean supervisor;

    private Employee[] whoISupervise;

    private boolean hrStaff;

    private boolean collector;


    private final static String DELIM = ", ";


    public User() {

    }


    // getters / setters

    //@JsonProperty("userName")

    public void setUserName(String ldapUid) {

        this.userName = ldapUid;

    }

    public String getUserName() {

        return this.userName;

    }


    //@JsonProperty("employeeId")

    public void setEmployeeId(String employeeId) {

        this.employeeId = employeeId;

    }

    public String getEmployeeId() {

        return this.employeeId;

    }


    //@JsonProperty("employeeName")

    public void setEmployeeName(String employeeName) {

        this.employeeName = employeeName;

    }

    public String getEmployeeName() {

        return this.employeeName;

    }


    //@JsonProperty("homeUnitCode")

    public void setHomeUnitCode(String homeUnitCode) {

        this.homeUnitCode = homeUnitCode;

    }

    public String getHomeUnitCode() {

        return this.homeUnitCode;

    }


这是(Java)服务方法,它应该接受并处理 POST 请求:


倚天杖
浏览 234回答 1
1回答

慕标琳琳

您不需要将“用户”对象转换为字符串以传递给后端。尝试按原样传递用户对象。this.httpClient.post<Employee[]>(postUrl,&nbsp;user,&nbsp;httpOptions);并且还请检查传递的参数是否真正匹配暴露的其余服务。
随时随地看视频慕课网APP

相关分类

Java
我要回答