2013-03-08 174 views
0

我們試圖從我們的web服務生成json。我們的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的followng 。我們只需要數組[]。如上所述(int他第一個json)。

{ 
"JasonClass": 
} 
+0

如果刪除@xmlRootelement會怎樣?不知道這是否允許tho – Rob 2013-03-08 10:44:22

+0

Xml文檔需要一個根節點,您基本上在這裏創建一個XML文檔,然後將其轉換爲JSON。 – 2013-03-08 10:54:52

回答

0

我只是跳過註釋,讓一個好的JSON提供程序處理轉換。正如@Rob所暗示的,我認爲問題在於@XmlRootElement註釋。我通常只定義了簡單的POJO(但沒有getter和setter方法),

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

然後,如果你想返回的Info列表,你只從新澤西州的資源返回一個List<Info>。該類的名稱默認省略。我不確定當你說你使用Jersey生成JSON時你的意思是什麼 - 就我所知,Jersey本身不會轉換爲/從JSON轉換,你需要一個擴展。我使用傑克遜,它與Jersey很好地集成(它只需要在類路徑中,不需要額外的配置)。