我有一个带有一长串区号的 JSON 对象。不幸的是,每个区号都是数据对象列表中的对象名称。如何创建允许 RestSharp 反序列化内容的类?
这是我的类(class)现在的样子:
public class phaxioResponse
{
public string success { get; set; }
public string message { get; set; }
public List<areaCode> data { get; set; }
public class areaCode
{
public string city { get; set; }
public string state { get; set; }
}
}
这是 JSON 内容:
{
success: true
message: "277 area codes available."
data: {
201: {
city: "Bayonne, Jersey City, Union City"
state: "New Jersey"
}
202: {
city: "Washington"
state: "District Of Columbia"
} [...]
}
最佳答案
由于这个 JSON 不是 C# 友好的,我不得不做一些 hackery 以使其正确显示。不过,结果还是很不错的。
var json = JsonConvert.DeserializeObject<dynamic>(sampleJson);
var data = ((JObject)json.data).Children();
var stuff = data.Select(x => new { AreaCode = x.Path.Split('.')[1], City = x.First()["city"], State = x.Last()["state"] });
此代码将生成最能代表数据的匿名类型。但是,对于更普通的 DTO 类,匿名类型可以很容易地替换为 ctor
。
输出看起来像这样:
关于c# - 使用动态对象反序列化 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505096/