0

Web サービスから json を生成しようとしています。JSON の形式を以下に示します。JSON の生成には jersey を使用しています。

[
        {
            "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 プロバイダーに変換を処理させます。@XmlRootElement@Rob が示唆するように、問題は注釈にあると思います。私は通常、単純な POJO のみを定義します (ただし、セッターとゲッターは使用しません)。

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

次に、のリストを返したい場合は、Jersey リソースから をInfo返すだけです。List<Info>デフォルトでは、クラスの名前は省略されています。JSON生成にJerseyを使用していると言ったときの意味がわかりません-私の知る限り、Jersey自体はJSONとの間で変換されません。そのための拡張機能が必要です。私はJerseyとうまく統合するJacksonを使用しています(クラスパス上にあるだけでよく、追加の構成は必要ありません)。

于 2013-06-16T12:12:35.353 に答える