无法使用JavaScriptSerializer反序列化

时间:2014-12-10 16:13:37

标签: c# javascriptserializer

我有这个json文件

{
    "result":
        [
            {
                "desc" : "Ok",
                "cod" : "1"
            }
        ],
    "data":
        [
            {
                "cod" : "95B86DF6AE282E67B6B7437D09570847"
            }
        ]
}

一种反序列化的方法

protected void Deserialize()
        {
            string path = AppDomain.CurrentDomain.BaseDirectory + @"\token.json";
            string file = System.IO.File.ReadAllText(path);

            var deserializer = new JavaScriptSerializer();
            var results = deserializer.Deserialize<data>(file);

        }
public class result
{
    public int cod { get; set; }
    public string desc{ get; set; }
}
public class data
{
    public string cod{ get; set; }
}

问题是它没有反序列化它,并创建空的Data对象。 我错过了什么,但我不知道是什么,希望有人能帮助我。

1 个答案:

答案 0 :(得分:1)

您的数据模型与JSON对象不对应,并且序列化程序无法正确反序列化它。请注意,在该对象内部有对象数组,因此需要反序列化的正确结构如下:

public class Token
{
    public Result[] result { get; set; }
    public Data[] data { get; set; }
}

然后你可以这样做:

var res = JsonConvert.DeserializeObject<Token>(file);