【问题标题】:C# Automatic Property Deserialization - ListsC# 自动属性反序列化 - 列表
【发布时间】:2011-03-18 07:25:15
【问题描述】:

我正在尝试在我的 MVC 操作中使用自动反序列化,如下所示:

public void CreateEntitlementEntity(EntitlementEntityModel model) {
     // stuff
}

这是我要反序列化的类:

public class EntitlementEntityModel {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }

    public List<string> Domains { get; set; }

    public EntitlementEntityModel() { }
}

我将 JSON 数据对象传递给控制器​​操作:

data: {
    FirstName: 'first',
    LastName: 'last',
    Email: 'email@email.com',
    Domains: ['a','b','c']
}

除字符串列表外,所有属性都正确反序列化。我想将 JSON 数组转换为 List,但它给了我一个包含一个字符串的列表,即 JSON 数组字符串。

有没有办法在 .Net Framework 3.5 中实现这一点?

谢谢

【问题讨论】:

    标签: c# properties deserialization complex-data-types


    【解决方案1】:

    也许你可以使用这个线程的一些输入?

    Deserializing json array into .net class

    【讨论】:

    • 我检查了链接,但我看不出这对我有什么帮助。我不是在问如何将数组反序列化为一般意义上的列表,我是在问是否可以在 MVC 操作中使用自动(隐式?)反序列化来做到这一点。
    【解决方案2】:

    如果您将 JsonValueProviderFactory 转储到 global.asax 中的 OnApplicationStarted() 方法中,它应该可以将 json 对象反序列化为控制器操作的输入参数。

    protected override void OnApplicationStarted()
    {
        base.OnApplicationStarted();
    
        // for managing complex json objects
        ValueProviderFactories.Factories.Add(new JsonValueProviderFactory());
    

    【讨论】:

    • 在 .Net Framework 3.5 中是否有类似的解决方案?
    • 我不确定您是否需要 4.0 才能执行此操作。它是 MVC 2 Futures 中可用的 ProviderFactory。它在 MVC 3 中默认注册。
    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多