为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

倚天杖 2021-12-18 15:24:59
带有 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 请求:
查看完整描述

1 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您不需要将“用户”对象转换为字符串以传递给后端。尝试按原样传递用户对象。

this.httpClient.post<Employee[]>(postUrl, user, httpOptions);

并且还请检查传递的参数是否真正匹配暴露的其余服务。


查看完整回答
反对 回复 2021-12-18
  • 1 回答
  • 0 关注
  • 233 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信