反序列化为扩展List <t>

时间:2017-12-07 12:37:05

标签: c# json serialization

使用

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

以下正确反序列化我的JSON数组:

public List<PrintJobTranslation> Translations

以下不是:

public PrintJobTranslations Translations

public class PrintJobTranslations : List<PrintJobTranslation>
{
    public string GetTranslation(string Key, string defaultValue)
    {
        var translation = this.FirstOrDefault(x => x.Key == Key);
        if (translation == null) return defaultValue;
        return translation.Translation;
    }
}

它抛出错误:

  

System.Collections.Generic.Dictionary`2 [System.String,System.Object] ist kein Wert des Typs Print.printJob.PrintJobTranslation und kann in dieser generischen Sammlung nicht verwendet werden。参数名称:值

我没有找到确切的翻译,但应该是英文的:

  

System.Collections.Generic.Dictionary`2 [System.String,System.Object]不是Print.printJob.PrintJobTranslation类型的值,不能在泛型集合中使用。参数名称:值

如何正确地反序列化JSON?

1 个答案:

答案 0 :(得分:2)

完全支持这一步的一种方法是不要那样做 - 你的方法看作是一种&#34;扩展方法&#34;,所以它&#39; ll 工作喜欢一个实例方法,但实际上不需要子类化任何东西:

public static class PrintJobTranslationExtensions
{
    public static string GetTranslation(
        this List<PrintJobTranslation> list, string Key, string defaultValue)
    {
        var translation = list.FirstOrDefault(x => x.Key == Key);
        if (translation == null) return defaultValue;
        return translation.Translation;
    }
}

并在代码中使用List<PrintJobTranslation>