我从第三方 API 获取了一堆 JSON 数据,如下所示:
returnValue = data["value"].ToObject<List<T>>();
除其中一个字段外,所有字段都只是基本的名称:值对,如下所示:
"Name":"Value"
我将需要的值映射到这样的类:
public sealed class Project
{
public string Id { get; set; }
public string Title { get; set; }
public string Url { get; set; }
public DateTime ProjectDateLocal { get; set; }
public string ParentFolderName { get; set; }
public string ParentFolderId { get; set; }
//causing trouble
public Int32 ProjectTypeId { get; set; }
public string PlayerUrl
{
get
{
return "http://em.edu.edu/prj/Play/" + this.Id;
}
}
}
但是,一个名称:值对就很复杂,如下所示:
"CustomFieldValues":[
{
"FieldName":"ProjectTypeId","FieldDefinitionId":"37a2ffeb3bd441f6a60158458910a04d40","DataType":"Integer","Value":"100105"
}
]
我只需要 FieldName(ProjectTypeId) 和 Value,有没有办法让类识别它并将其设置在我的 ProjectTypeId 属性中?
谢谢!
最佳答案
正如@viggity所说,您可以使用Newtonsoft来解决您的问题,并且提供的解决方案很好。您唯一要做的就是向反序列化器提供一个好的字符串 json。
如果您想要一个更简单的解决方案,为什么不使用 data["value"].ToObject<List<Project>>()
?
注意:分配类似 [JsonProperty("FieldNameFromJson")]
的属性对于映射来说非常有用。
查看此post了解有关如何执行此操作的更多信息。
关于c# - 将 JSON 对象映射到 C# 类属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32974391/