错误:
无法将类型“UserItem”隐式转换为“RootObject”
如何将 JSON 反序列化到这个 POCO 类中?
我只是想将 json 数据反序列化为 C# 自定义 poco 类,如下所示,这是我到目前为止所做的;
public static UserItem DownloadJSONString(string urlJson)
{
using (WebClient wc = new WebClient())
{
var json = wc.DownloadString(urlJson);
UserItem userItems = JsonConvert.DeserializeObject<RootObject>(json);
return userItems;
}
}
我有点困在这里
这里是我的 Json:
{
"meta":
{
"status":200,
"resultSet":
{
"id":"05"
},
"pagination":
{
"count":2,
"pageNum":1,
"pageSize":2
}
},
"results":
{
"id":0,
"name":
"title",
"items":
[
{
"id":0,
"name":"English",
"title":"English",
},
{
"id":0,
"name":"Spanish",
"title":"Spanish;",
}
]
}
}
这是我的 json 对象(从 json 生成到 c# 类)
public class ResultSet
{
public string id { get; set; }
}
public class Pagination
{
public int count { get; set; }
public int pageNum { get; set; }
public int pageSize { get; set; }
}
public class Meta
{
public int status { get; set; }
public ResultSet resultSet { get; set; }
public Pagination pagination { get; set; }
}
public class Item
{
public int id { get; set; }
public string name { get; set; }
public string title { get; set; }
}
public class Results
{
public int id { get; set; }
public string name { get; set; }
public List<Item> items { get; set; }
}
public class RootObject
{
public Meta meta { get; set; }
public Results results { get; set; }
}
这是我的简单 UserItem
POCO 类
public class UserItem
{
public int id { get; set; }
public string name { get; set; }
public string title { get; set; }
}
最佳答案
给你:
var root = JsonConvert.DeserializeObject<RootObject>(json);
var userItem = root.results.items
.Select(i => new UserItem
{
id = i.id,
name = i.name,
title = i.title
}).FirstOrDefault();
return userItem;
如您所知,您不能只将 Item
类转换为 UserItem
,但您可以构建一个。这里要注意的一件事是,很明显,如果您只想退回一个,则只需要拿一个。在这里,我捕获了第一个或默认值。例如,如果列表为空,则默认值为 null
。
关于c# - 如何将 JSON 反序列化到这个 POCO 类中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110468/