我正在尝试创建一个休息终点并使用Swagger作为UI表示。我使用它的pojo有一个用@JsonIgnore
private Map<String, Object> property = new HashMap<String, Object>();
注释的变量,如下所示。
JSON
现在,当我向此终点提供null
(具有属性值)并尝试读取其值时,它将显示为@JsonIgnore
(由于pojoObj.getProperties(); //null
)。
@JsonIgnore
如果我可以在不删除{{1}}注释的情况下获取属性值,有什么办法吗?
答案 0 :(得分:5)
这可以通过利用Jackson的Mixin功能来实现,您可以在其中创建另一个取消忽略注释的类。然后你可以&#34;附加&#34;在运行时混合到$db = mysqli_connect("$host:$port", $user, $pass) or die("null");
mysqli_select_db($db, $database) or die("Unable to select database");
mysqli_query("SET NAMES utf8", $db);
mysqli_query( "SET CHARACTER SET utf8", $db );
$h.= "";
$h.= "<form><table class='table table-striped table-hover'>";
$h.= " <tr>";
$h.= " <th>#</th>";
$h.= " <th>Home</th>";
$h.= " <th></th>";
$h.= " </tr>";
$sql = mysqli_query("SELECT * FROM songs");
$res = mysqli_result($sql);
for($i=0;$i<$res->num_rows);$i++){
$h.= " <td>".($res,$i,"id")."</td>";
$h.= " <td>".($res,$i,"song")."</td>";
}
:
这是我用过的POJO:
ObjectMapper
这是&#34;其他&#34;类。它只是具有相同属性名称
的另一个POJOpublic class Bean
{
// always deserialized
public String name;
// ignored (unless...)
@JsonIgnore
public Map<String, Object> properties = new HashMap<String, Object>();
}
Jackson模块用于将bean绑定到mixin:
public class DoNotIgnore
{
@JsonIgnore(false)
public Map<String, Object> properties;
}
将它们捆绑在一起:
@SuppressWarnings("serial")
public class DoNotIgnoreModule extends SimpleModule
{
public DoNotIgnoreModule() {
super("DoNotIgnoreModule");
}
@Override
public void setupModule(SetupContext context)
{
context.setMixInAnnotations(Bean.class, DoNotIgnore.class);
}
}