我尝试使用Json.NET来使用OData(类似)服务。我的数据结构有集合属性。 但是,所有这些属性都包含在名为' results'通过我的服务。即使是返回实体集合的主查询也会被包装到名为results的根属性中。
虽然我不是OData专家,但我认为这几乎是一个标准,因为如果我尝试发送一个对象图进行更新,并省略这个'结果'包装说一个int集合类型属性然后我收到来自服务器的错误消息"发现没有'结果的集合'属性。在OData中,每个集合必须表示为具有属性'结果的JSON对象""
所以我理解服务器错误消息,我也知道如何解决这个问题。当然我可以在我的C#对象模型中模仿这个对象图,但是在我的对象模型中编写第101个包装器后,它往往很无聊,我不想重新发明轮子。
我的问题是有一个开箱即用的解决方案如何处理这个结果属性,并使其透明?如果这是一个标准'我想我不是第一个面临这项任务的人。
提前致谢
答案 0 :(得分:1)
你可以写一个并随处使用
public class OData<T> where T : IEnumerable
{
public T results { get; set; }
}
public class X
{
public string Prop { get; set; }
public OData<List<int>> List { get; set; }
}
class Program
{
static void Main(string[] args)
{
var x = new X()
{
Prop = "test",
List = new OData<List<int>> {results = new List<int>() {1, 2, 3}}
};
Console.WriteLine(JsonConvert.SerializeObject(x));
}
}