【问题标题】:Parse json nested array into c# object将 json 嵌套数组解析为 c# 对象
【发布时间】:2019-07-16 23:23:13
【问题描述】:

我需要将一个 json 对象解析为一个 c# 类,我的问题是 json 对象有一个嵌套数组,并且在解析时会抛出一些错误。

我尝试了几个选项: a)在嵌套数组的元素中执行foreach,并将它们添加到新数组中 b) 使用 json.deserialize 解析

目前没有成功

These are my c# classes

public class itemPrediccion
    {
        public string ClavePartido { get; set; }
        public string Ganador { get; set; }
        public bool EsFavorito { get; set; }
    }

    public class Prediccion
    {
        public ObjectId _id { get; set; }
        public string IdUsuario { get; set; }
        public int Jornada { get; set; }
        public IEnumerable<itemPrediccion> PrediccionesJornada { get; set; }
    }

“Prediccion”类的对象将包含“itemPrediccion”列表

This is the json object that I want to parse to a "Prediccion" object

{
    "IdUsuario" : "user1", 
    "Jornada" : "1",
    "PrediccionesJornada" : [
        {
            "ClavePartido" : "AP2019J1P1",
            "Ganador": "Morelia",
            "EsFavorito": "false"
        },
        {
            "ClavePartido" : "AP2019J1P2",
            "Ganador": "Chivas",
            "EsFavorito": "false"
        },
        {
            "ClavePartido" : "AP2019J1P3",
            "Ganador": "Atlas",
            "EsFavorito": "true"
        }
    ]
}

这就是我试图反序列化的方式

string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);

Prediccion prediccionUsuario = new Prediccion {
                        IdUsuario = data.IdUsuario,
                        Jornada = data.Jornada,
                        PrediccionesJornada = data.PrediccionesJornada
                    };

抛出此错误:

无法将类型“Newtonsoft.Json.Linq.JArray”隐式转换为 'System.Collections.Generic.IEnumerable'。 存在显式转换(您是否缺少演员表?)

【问题讨论】:

    标签: c# arrays json


    【解决方案1】:

    您应该能够使用反序列化器的非动态变体:

    var result =JsonConvert.DeserializeObject<Prediccion>(requestBody);
    

    【讨论】:

    • 感谢您的帮助!!
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2020-11-15
    • 2018-04-09
    • 1970-01-01
    • 2020-07-08
    相关资源
    最近更新 更多