【问题标题】:Can't deserialize with JavaScriptSerializer无法使用 JavaScriptSerializer 反序列化
【发布时间】:2014-12-10 16:13:36
【问题描述】:

我有这个 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 对象。 我错过了一些东西,但我不知道是什么,希望有人能帮助我。

【问题讨论】:

  • 你的Data班级在哪里?
  • Datos = 数据。已经改了
  • 你的数据类与JSON格式不对应。

标签: c# javascriptserializer


【解决方案1】:

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

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

然后你可以这样做:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多