0

我们试图从我们的网络服务生成 json。我们的 JSON 格式如下所示。我们正在使用球衣生成 JSON。

[
        {
            "InfoList": {
                "name": "test",
                "slot": "2",
            },
            "Info": {
                "Id": "212",
                "name": "sdsdsd",
            },
            "abcInfoList": [
                {
                    "aname": "",
                    "slt": "1",
                },
                {
                {
                    "aname": "",
                    "slt": "1",
                }
            ],
        },
        {
            "InfoList": {
                "name": "test",
                "slot": "2",
            },
            "Info": {
                "Id": "212",
                "name": "sdsdsd",
            },
            "abcInfoList": [
                {
                    "aname": "",
                    "slt": "1",
                },
                {
                {
                    "aname": "",
                    "slt": "1",
                }
            ],
        },
        {
            "InfoList": {
                "name": "test",
                "slot": "2",
            },
            "Info": {
                "Id": "212",
                "name": "sdsdsd",
            },
            "abcInfoList": [
                {
                    "aname": "",
                    "slt": "1",
                },
                {
                {
                    "aname": "",
                    "slt": "1",
                }
            ],
        },
]

我们在下面设计了一个类来保存生成 JSON 的值

@XmlRootElement(name="JasonClass")
public class JsonClass {

    @XmlElement(name="InfoList")
    public Info getInfoList()
    {
        return this.info;
    }
    public void setInfoList(InfoList infoList)
    {
        this.infoList=infoList;
    }
    @XmlElement(name="Info")
    public Info getInfo()
    {
        return this.hostInformation;
    }
    public void setInfo(Info info)
    {
        this.info=info;
    }


    @XmlElement(name="abcInfoList")
    public Info getabcInfoList()
    {
        return this.abcInfoList;
    }
    public void setabcInfoList(AbcInfoList abcInfoList)
    {
        this.abcInfoListt=abcInfoList;
    }
}

And we are returning array of JsonClass for JSON. 

    @GET
    @Path("/service")
    @Produces("application/json")
    public JsonClass[] getJsonList() {
        JsonClass[] jsonList = new JsonClass[count];
        //code for fliing array
        //code for fliing array
        return jsonList;
    }

它正在生成,如下所示

{ 
"JasonClass":[
        {
            "InfoList": {
            "name": "test",
            "slot": "2",
            },
            "Info": {
            "Id": "212",
            "name": "sdsdsd",
            },
            "abcInfoList": [
            {
                "aname": "",
                "slt": "1",
            },
            {
            {
                "aname": "",
                "slt": "1",
            }
            ],
        },
        {
            "InfoList": {
            "name": "test",
            "slot": "2",
            },
            "Info": {
            "Id": "212",
            "name": "sdsdsd",
            },
            "abcInfoList": [
            {
                "aname": "",
                "slt": "1",
            },
            {
            {
                "aname": "",
                "slt": "1",
            }
            ],
        },
        {
            "InfoList": {
            "name": "test",
            "slot": "2",
            },
            "Info": {
            "Id": "212",
            "name": "sdsdsd",
            },
            "abcInfoList": [
            {
                "aname": "",
                "slt": "1",
            },
            {
            {
                "aname": "",
                "slt": "1",
            }
            ],
        },
    ]
}

但我们不希望 JSON 中有以下内容。我们只需要数组[]。如上所述(int he first json)。

{ 
"JasonClass":
}
4

1 回答 1

0

我会跳过注释,让一个好的 JSON 提供程序来处理转换。正如@Rob 建议的那样,我认为问题出在@XmlRootElement注释上。我通常只定义简单的 POJO(但没有 setter 和 getter),

public class Info {
    public String id;
    public String name;
}

然后,如果你想返回一个你的列表,Info你只需List<Info>从你的 Jersey 资源中返回一个。默认情况下省略类的名称。当您说您正在使用 Jersey 生成 JSON 时,我不确定您的意思 - 据我所知,Jersey 本身不会转换为 JSON 或从 JSON 转换,您需要为此进行扩展。我正在使用 Jackson,它与 Jersey 很好地集成(它只需要在类路径上,不需要额外的配置)。

于 2013-06-16T12:12:35.353 回答