如何在JSON响应中忽略(/隐藏)类的属性

时间:2016-06-08 08:39:09

标签: java json rest

我是Java RESTful Web服务的新手。我的课程结构如下:

    class BaseClass{
        String basicInfo; 
    }

    class DataClass extends BaseClass{
        String id;  
    }   

    class DataList extends BaseClass{
        List<DataClass> dataList;
    }

当我将DataList类作为Web服务的响应时,我得到以下格式:

    {
        "basicInfo" : "Mandetory",
        "dataList"  : [
                {
                    "basicInfo" : "Optional",
                    "id" : "I_1001"                 
                },
                {
                    "basicInfo" : "Mandetory",
                    "id" : "I_1002"
                }
        ]

    }

但是我想在dataList的每个数据对象中忽略“basicInfo”属性。

离。

{
        "basicInfo" : "Mandetory",
        "dataList"  : [
                {
                    "id" : "I_1001"                 
                },
                {
                    "id" : "I_1002"
                }
        ]

    }

有什么方法可以忽略这些属性(使用注释)?

注意:我无法更改类结构。

2 个答案:

答案 0 :(得分:1)

  

@JsonIgnore

以上是您需要的注释。有关此内容的更多变化,您可以浏览以下link。将上述注释添加到您希望在传输对象中忽略的字段中,并且在解析时将忽略它。由于您没有提到您使用哪个库来使用json,我已经使用杰克逊图书馆回答了您的问题

答案 1 :(得分:1)

您可以在属性@XmlTransient上使用JAX-B注释basicInfo

或者,当JSON-B(JSR 367)可用时(Java EE 8),您可以使用@JsonbTransient或更好的@JsonbVisibility属性。