gpt4 book ai didi

java - 使用 @JsonInclude(NON_DEFAULT) 时 GET 上出现 DropWizard 400 错误

转载 作者:行者123 更新时间:2023-12-01 18:10:55 26 4
gpt4 key购买 nike

当我使用 Postman 向 games/ 发送 GET 时,收到 400 无法解析 JSON 错误。

游戏资源:

@Path("/games")
@Produces(MediaType.APPLICATION_JSON)
public class GameResource {
@GET
public List<Game> getGames() {
ArrayList<Game> l = new ArrayList<Game>();
l.add(new Game(100));
return l;
}
}

游戏:

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

public class Game {
protected int id;
protected int whoseTurn;
protected int winner;
protected char[][] board;

public Game(int id, int turn, int winner, char[][] board) {
this.id=id;
this.whoseTurn=turn;
this.winner=winner;
this.board=board;
}

public int getId() {
return id;
}

public int getWhoseTurn() {
return whoseTurn;
}

@JsonInclude(Include.NON_DEFAULT)
public int getWinner() {
return winner;
}

@JsonIgnore
public char[][] getBoard() {
return board;
}

如果我删除 getWinner 上的注释,它就可以正常工作。为什么会这样? DropWizard 不支持 Include.NON_DEFAULT 吗?其他注释似乎工作正常...

最佳答案

除非您有一个无参数构造函数,否则 Include.NON_DEFAULT 将不起作用,例如,以下内容将起作用(没有 setter ,它相当无用)。

import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;

public class Game {
protected int id;
protected int whoseTurn;
protected int winner = -1;
protected char[][] board;

public Game() { }

public Game(int id, int turn, int winner, char[][] board) {
this.id = id;
this.whoseTurn = turn;
this.winner = winner;
this.board = board;
}

public int getId() {
return id;
}

public int getWhoseTurn() {
return whoseTurn;
}

@JsonInclude(Include.NON_DEFAULT)
public int getWinner() {
return winner;
}

@JsonIgnore
public char[][] getBoard() {
return board;
}
}

这是有效的,因为有一个默认的无参数构造函数,并且获胜者有一个默认值。 JavaDoc可能会为您提供更多帮助。

关于java - 使用 @JsonInclude(NON_DEFAULT) 时 GET 上出现 DropWizard 400 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33071397/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com