2016-12-13 24 views
0

嗨我想在角度中繼器中使用下面代碼中的json集合。 我需要給集合一個名字,但我不知道如何jsonResult with collectionname

這是代碼生成JSON

 public JsonResult GetProducts() 
     { 
      var result = db.Products.ToList(); 

      var list = JsonConvert.SerializeObject(result, Formatting.None, new JsonSerializerSettings(){ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore}); 

      return Json(list,JsonRequestBehavior.AllowGet); 
    } 

,這是結果

[{ 
"Category": { 
    "ID": 4, 
    "Name": "TEST" 
}, 
"OrderDetails": [], 
"ID": 10006, 
"Description": "TEST", 
"Name": "TEST", 
"Price": 3.20, 
"PictureUrl":"", 
"CategoryId": 4, 
"AddedToShop": "2016-12-11T14:52:57.677" 
}, 
{ 
"Category": { 
    "ID": 4, 
    "Name": "TEST" 
}, 
"OrderDetails": [], 
"ID": 20005, 
"Description": "TEST2", 
"Name": "TEST2", 
"Price": 3.20, 
"PictureUrl":"", 
"CategoryId": 4, 
"AddedToShop": "2016-12-12T12:02:10.593" 
}] 

,我想它就像下面的代碼一樣,我可以使用產品標籤進行迭代。針對您的問題,定義一個單獨的類,並定義一個屬性該類無論是作爲集合或類型的列表「db.Products」(該對象爲你使用正確的類名

{ 
"products": [{ 
"Category": { 
    "ID": 4, 
    "Name": "TEST" 
}, 
"OrderDetails": [], 
"ID": 10006, 
"Description": "TEST", 
"Name": "TEST", 
"Price": 3.20, 
"PictureUrl":"", 
"CategoryId": 4, 
"AddedToShop": "2016-12-11T14:52:57.677" 
}, 
{ 
"Category": { 
    "ID": 4, 
    "Name": "TEST" 
}, 
"OrderDetails": [], 
"ID": 20005, 
"Description": "TEST2", 
"Name": "TEST2", 
"Price": 3.20, 
"PictureUrl":"", 
"CategoryId": 4, 
"AddedToShop": "2016-12-12T12:02:10.593" 
}]} 

回答

0

如果您正在使用的WebAPI控制器不需要發送JsonResult,所有你需要做的就是創建一個類,並將其發送回客戶端:

public class MyClass 
{ 
    public List<Product> Products { get; set; }  
} 

而在你的控制器:

public MyClass Get() { 
    return new MyClass { 
     Products = db.Products.ToList() 
    };   
} 

OR:

只需創建你的對象,然後通過它的串行:

JsonConvert.SerializeObject({ "products": result }, Formatting.None, new JsonSerializerSettings(){ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore}) 
+0

謝謝,簡單的選項工作,我會嘗試第一個,但現在這讓我進一步感謝你 – Frons

0

一種解決方案在你的代碼),當你序列化對象,你會得到它,你已經要求

class ProductList 
{ 
public Collection<YourType> Products{get; set;} 
} 

OR

class ProductList 
{ 
public List<YourType> Products{get; set;} 
} 
0

您可以使用

var list = JsonConvert.SerializeObject(new { products = result }, Formatting.None, new JsonSerializerSettings() { ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore });