c# - 将 JSON 对象映射到 C# 类属性

标签 c# json c#-4.0

我从第三方 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/

相关文章:

c# - 这是已知的线程安全同步/锁定模式吗?

c# - AWS 中跨 lambda 的连接池

c# - string.Concat 在 .net 3.5 和 .net 4+ 上的工作方式不同

arrays - 将 json 数组解码为 go struct(数组位于 JSON 字符串的中间

java - 根据请求url自动选择viewResolver?

java - 将 JSON 转换为 Android Bundle

c# - 转义 .NET 命令行参数的规范解决方案

c# - 使用 ADO 3.5 将数据从 Excel 导入 64 位应用程序

c# - 插入数据库按钮代码不起作用不确定如何修复它

c# - 如何隐藏asp.net 向导控件步骤名称?