0

サーバー側のロジックに必要な多くの属性を持つクラスがありますが、そのうちのいくつかは UI に必要です。クラスから json を作成すると、すべての属性が json に書き込まれます。jsonに変換するときだけ、いくつかの値を無視したい。で試しました@JsonIgnore。しかし、それは機能していません。

私のクラスは

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Student {

    @JsonProperty("id")
    protected Integer id;

    @JsonProperty("name")
    protected String name;

    /**
     * This field I want to ignore in json.
     * Thus used @JsonIgnore in its getter
     */
    @JsonProperty("securityCode")
    protected String securityCode;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @JsonIgnore
    public String getSecurityCode() {
        return securityCode;
    }

    public void setSecurityCode(String securityCode) {
        this.securityCode = securityCode;
    }
}

そして、私はこれを使用して書いています

public static StringBuilder convertToJson(Object value){
        StringBuilder stringValue = new StringBuilder();
        ObjectMapper mapper = new ObjectMapper();
        try {
            stringValue.append(mapper.writeValueAsString(value));
        } catch (JsonProcessingException e) {
            logger.error("Error while converting to json>>",e);
        }
        return stringValue;
    }

My Expected json should contain only :

id:1
name:abc

but what I am getting is
id:1
name:abc
securityCode:_gshb_90880..some_value.

ここで何が問題なのですか、助けてください

4

1 に答える 1

2

あなたの@JsonProperty注釈は注釈を上書きします@JsonIgnore。から削除@JsonPropertyするsecurityCodeと、目的の json 出力が生成されます。

より高度な無視/フィルタリングが必要な場合は、以下をご覧ください。

@JsonView: http://wiki.fasterxml.com/JacksonJsonViews

@JsonFilter: http://wiki.fasterxml.com/JacksonFeatureJsonFilter

于 2015-11-29T10:31:38.533 に答える