JSON到C#转换 - 像对象一样的键

时间:2014-05-21 19:14:33

标签: c# json rest

我阅读了很多关于JSON到C#转换的文章,但我有一个特定的问题。我尝试使用以下代码行将JSON从Http响应转换为NewsResult类型的C#对象:

var newsResult = await response.Content.ReadAsAsync<NewsResult>();

此代码适用于大多数情况,并自动将JSON数据映射到C#对象的层次结构,但在一种情况下,REST返回以下JSON:

{
"result": {
    "1": {
        "id": 1,
        "title": "title01"            
    },
    "2": {
        "id": 2,
        "title": "title02" 
    },
    ...

生成的C#类应该如下所示

public class NewsResult
{
    public ICollection<News> Result { get; set; }
}

我无法自动将此JSON映射到某个C#对象层次结构。你有什么想法请问如何解决这个问题?我更喜欢我提到的C#代码,但如果需要它我会尝试另一种方法。还有一个信息:我无法更改REST服务。谢谢。

1 个答案:

答案 0 :(得分:2)

这应该有效

HttpClient c = new HttpClient();
var response = await c.GetAsync(yoururl);
var newsResult = await response.Content.ReadAsAsync<NewsResult>();

public class NewsResult
{
    public Dictionary<string, Item> result { set; get; }
}

public class Item
{
    public string id { set; get; }
    public string title { set; get; }
}