我在Web API Web服務中使用Linq to SQL從數據庫檢索數據並返回JSON文件。在Web API中將數組標題添加到Linq-to-SQL-to-JSON
我的問題其實很簡單,但我已經通過論壇,找不到答案。請在下面找到我的問題的描述,以及我的(簡化的)源代碼。
我返回的對象有兩個級別的數據。爲了讓你明白,這裏是我的課怎麼看起來像:
public class X
{
public int ID { get; set; }
public DateTime date { get; set; }
public virtual ICollection<Y> Ys
public virtual ApplicationUser User { get; set; }
}
public class Y
{
public int ID { get; set; }
public int XID { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public virtual X x { get; set; }
}
你可以看到,每一個X1對象,我可以有一個嵌套了好X2對象。
要檢索,我用下面的LINQ在我的WebAPI控制器到SQL:
public IHttpActionResult GetXsByUser(string userID)
{
var xs = (from x in db.Xs
where x.User.Id == userID
orderby x.date
select new
{
x_id = x.ID,
date = x.date,
Ys = (from y in db.Ys
where x.User.Id == userID && x1.ID == y.XID
select new
{
unit_price = y.Price,
quantity = y.Quantity
})
});
if (xs == null)
{
return NotFound();
}
return Ok(xs);
}
我的web服務工作正常,並返回以下JSON:
[
{
"$id": "1",
"x_id": 1,
"date": "2014-01-24T00:00:00",
"Ys": [
{
"$id": "2",
"unit_price": 2.47,
"quantity": 2
},
{
"$id": "3",
"unit_price": 1.25,
"quantity": 3
},
{
"$id": "4",
"unit_price": 1.99,
"quantity": 2
}
]
},
{
"$id": "5",
"x_id": 2,
"date": "2014-01-28T00:00:00",
"Ys": [
{
"$id": "6",
"unit_price": 6.22,
"quantity": 1
},
{
"$id": "7",
"unit_price": 1.2,
"quantity": 3
}
]
}
]
的問題是,要然後在我的移動應用程序反序列化,我必須使用類如下:
public class Y
{
public string _$id { get; set; }
public double unit_price { get; set; }
public int quantity { get; set; }
}
public class RootObject
{
public string _$id { get; set; }
public int x_id { get; set; }
public string date { get; set; }
public List<Y> Ys { get; set; }
}
但是iw烏爾德希望能夠使用類如下:
public class Y
{
public string _$id { get; set; }
public double unit_price { get; set; }
public int quantity { get; set; }
}
public class OnlineX
{
public string _$id { get; set; }
public int x_id { get; set; }
public string date { get; set; }
public List<Y> Ys { get; set; }
}
public class RootObject
{
public List<OnlineX> OnlineXs { get; set; }
}
我有一個JSON的編輯工作,並知道了解決方案,使這是具有下列JSON文件,而不是以前的一個:
{
"OnlineXs": [
{
"$id": "1",
"x_id": 1,
"date": "2014-01-24T00:00:00",
"Ys": [
{
"$id": "2",
"unit_price": 2.47,
"quantity": 2
},
{
"$id": "3",
"unit_price": 1.25,
"quantity": 3
},
{
"$id": "4",
"unit_price": 1.99,
"quantity": 2
}
]
},
{
"$id": "5",
"x_id": 2,
"date": "2014-01-28T00:00:00",
"Ys": [
{
"$id": "6",
"unit_price": 6.22,
"quantity": 1
},
{
"$id": "7",
"unit_price": 1.2,
"quantity": 3
}
]
}
]
}
請注意,唯一改變的是我添加一個標題給我的數組Xs(「Online Xs」)。這就是爲什麼我說我的問題很簡單。但事情是,我不知道如何在Web API中做到這一點。這只是我的Linq to SQL請求中的一個小改動?我應該建立一個自定義的JSON序列化程序嗎?
我希望我的問題很清楚,如果您想了解更多信息,我會很樂意提供。
感謝很多提前
編輯:
好吧,我已經找到了解決辦法,這是簡單的。那就是:
我不得不更換:
return Ok(xs);
通過
return Ok(new { OnlineXs = xs });
經過幾個小時撓我的頭我終於結束了你的答案。哥們,謝啦 ;) –