2012-04-01 55 views
2

我送JSON:在WCF設置JSON對象名稱REST

[ 
{ 
    "Description": "A kud ces bolje", 
    "ItemID": 1, 
    "Name": "Banane", 
    "NewPrice": 91.99, 
    "OldPrice": 161.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
{ 
    "Description": "Rastu na stablu", 
    "ItemID": 2, 
    "Name": "Kruske", 
    "NewPrice": 93.99, 
    "OldPrice": 117.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
] 

但我希望有一個名稱,這樣它看起來像

"Some_Name":[ 
{ 
    "Description": "A kud ces bolje", 
    "ItemID": 1, 
    "Name": "Banane", 
    "NewPrice": 91.99, 
    "OldPrice": 161.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
{ 
    "Description": "Rastu na stablu", 
    "ItemID": 2, 
    "Name": "Kruske", 
    "NewPrice": 93.99, 
    "OldPrice": 117.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
] 

我回到List<Item>

[OperationContract] 
[WebGet(UriTemplate = "/items/{id}", ResponseFormat = WebMessageFormat.Json)] 
List<ItemService> GetItems(string id); 

Item是:

[DataContract] 
public class ItemService 
{ 
    [DataMember] 
    public int ItemID { get; set; } 

    [DataMember] 
    public string Name { get; set; } 

    [DataMember] 
    public string Description { get; set; } 

    [DataMember] 
    public Decimal OldPrice { get; set; } 

    [DataMember] 
    public Decimal NewPrice { get; set; } 

    [DataMember] 
    public string SaleStarts { get; set; } 

    [DataMember] 
    public string SaleEnds { get; set; } 
} 

回答

3

你不能命名JSon數據本身。您需要一個包含名稱的小包裝類:

class Wrapper { public Some_Name List<ItemService> {get;set;} 

將您的列表包裝在包裝中並返回包裝。

生成的JSON將是服用點像:

{ 
"Some_Name":[ 
{ 
    "Description": "A kud ces bolje", 
    "ItemID": 1, 
    "Name": "Banane", 
    "NewPrice": 91.99, 
    "OldPrice": 161.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
{ 
    "Description": "Rastu na stablu", 
    "ItemID": 2, 
    "Name": "Kruske", 
    "NewPrice": 93.99, 
    "OldPrice": 117.99, 
    "SaleEnds": "9/1/2013", 
    "SaleStarts": "9/1/2012" 
}, 
]}