我有一個ASP.NET MVC應用程序。這個應用程序包括C#,Razor和JSON.NET。我有一個C#對象,看起來像這樣:將動態C#對象序列化爲JSON
public class MyBlueprint
{
public string Name { get; set; }
public string Approach { get; set; }
public object Value { get; set; }
}
在這個時候,我有MyBlueprint
對象的列表是這樣的:
List<MyBlueprint> x = new List<MyBlueprint>();
{
new MyBlueprint { Name="Bill", Approach="straight", Value=1 },
new MyBlueprint { Name="Bill", Approach="straight", Value=7 },
new MyBlueprint { Name="Bill", Approach="straight", Value=10 },
new MyBlueprint { Name="John", Approach="straight", Value=120 },
new MyBlueprint { Name="John", Approach="straight", Value=105 },
new MyBlueprint { Name="John", Approach="straight", Value=150 },
new MyBlueprint { Name="John", Approach="straight", Value=100 },
new MyBlueprint { Name="Jill", Approach="curved", Value=1 },
new MyBlueprint { Name="Jill", Approach="curved", Value=2 },
new MyBlueprint { Name="Jill", Approach="curved", Value=5 },
new MyBlueprint { Name="Jill", Approach="curved", Value=8 }
};
我需要拉平的MyBlueprint
集合對象轉換爲預定義的JSON結構。最終的目標是讓JSON在我認爲是這樣的:
var results = [
{ "name": "Bill", "approach":"straight", options: { begin: 1, end: 10 } },
{ "name": "John", "approach":"straight", options: { begin: 100, end: 150 } },
{ "name": "Jill", "approach":"curved", options: { chosen: [1, 2, 5, 8] } }
];
的options
參數的基礎上,approach
值不同的屬性。上面的JSON顯示了兩種不同的結構:curved
和straight
。我會有更多。出於這個原因,我試圖找出一個動態的方法,而不需要創建大量的模型類。目前,我有以下幾點:
var names = new[] { "Bill", "John", "Jill" };
foreach (var name in names)
{
var blueprints = x.Where(y => y.Name == name).Select(z => z.Value.ToString());
}
我知道如何讓chosen
值列表的curved
集。我知道如何獲得straight
集合的begin
和end
值。但是,一旦擁有它們,我不知道該如何處理它們。我想弄清楚如何創建一個動態的C#對象,我可以序列化爲JSON並將其放置在視圖中。我錯過了什麼?我覺得有點卡住了。
像這樣的東西可能是做到這一點的最好辦法。 –