如何绕过@JsonIgnore注释?

时间:2017-01-11 10:12:20

标签: json jackson swagger

我正在尝试创建一个休息终点并使用Swagger作为UI表示。我使用它的pojo有一个用@JsonIgnore private Map<String, Object> property = new HashMap<String, Object>(); 注释的变量,如下所示。

JSON

现在,当我向此终点提供null(具有属性值)并尝试读取其值时,它将显示为@JsonIgnore(由于pojoObj.getProperties(); //null )。

@JsonIgnore

如果我可以在不删除{{1}}注释的情况下获取属性值,有什么办法吗?

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;类。它只是具有相同属性名称

的另一个POJO
public 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);
    }
}