如何使用Json.NET与标准(如)OData服务

时间:2014-10-14 10:55:36

标签: c# json.net odata

我尝试使用Json.NET来使用OData(类似)服务。我的数据结构有集合属性。 但是,所有这些属性都包含在名为' results'通过我的服务。即使是返回实体集合的主查询也会被包装到名为results的根属性中。

虽然我不是OData专家,但我认为这几乎是一个标准,因为如果我尝试发送一个对象图进行更新,并省略这个'结果'包装说一个int集合类型属性然后我收到来自服务器的错误消息"发现没有'结果的集合'属性。在OData中,每个集合必须表示为具有属性'结果的JSON对象""

所以我理解服务器错误消息,我也知道如何解决这个问题。当然我可以在我的C#对象模型中模仿这个对象图,但是在我的对象模型中编写第101个包装器后,它往往很无聊,我不想重新发明轮子。

我的问题是有一个开箱即用的解决方案如何处理这个结果属性,并使其透明?如果这是一个标准'我想我不是第一个面临这项任务的人。

提前致谢

1 个答案:

答案 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));
    }
}