我有两个看起来像这样的类:

public class Field
{
    public string Name { get; set; }
    public FieldType FieldType { get; set; }
}

public class FieldType
{
    public Dictionary<string, object> Settings { get; set; }

    public static readonly FieldType Text = new FieldType()
    {
        Settings = new Dictionary<string, object>() { { "setting 1", "" }, { "setting 2", "" } }
    };
}


我想反序列化以下json:

{
    "name": "First Name",
    "fieldType": "Text"
}


因此,为FieldType属性正确分配了“文本”的静态FieldType。

我是否需要修改FieldType类?还是我需要一些自定义的JsonSerializerSettings?

当前,我收到错误消息:将值“ Text”转换为“ FieldType”类型时出错。路径'fieldType

最佳答案

json的显示方式涉及fieldType是字符串类型的实例,因此,如果您将要反序列化的类更改为类似的东西,例如:

public class Field
{
    public string Name { get; set; }
    public string FieldType { get; set; }
}


反序列化将起作用。


  我是否需要修改FieldType类?


不,您不需要修改您的FieldType类,可以保持原样,反序列化为Field,然后使用字段类中的值可以填充FieldType类或执行任何操作想。

您不能反序列化为静态属性,因为您可以参阅this question以获得更多详细信息。如果需要将数据存储在静态字段中并将其接收到静态字段中,则不应尝试使用序列化。

10-06 12:19