我无法反序列化json数组

问题描述 投票:0回答:2

我输入了json

{
    "StudentData": {
        "Students": [{
            "StudentId": 76769,
            "StudentName": "*****",
            "Contacts": [{
                "ContactName": "****",
                "ContactEmail": "****",
                "АvailableContactEmail": true,
                "ContactMobile": "****",
                "АvailableContactMobile": true
            }]
        }]
    }
}

和这段代码

public class Contacts
{
    public string ContactName { get; set; }
    public string ContactEmail { get; set; }
    public bool АvailableContactEmail { get; set; }
    public string ContactMobile { get; set; }
    public bool АvailableContactMobile { get; set; }
}

public class Students
{
    public int StudentId { get; set; }
    public string StudentName { get; set; }
    public List<Contacts> Contacts { get; set; }
}

public class StudentData
{
    public List<Students> Students { get; set; }
}

public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
    log.Info("C# HTTP trigger function processed a request.");

       // Get request body
        dynamic data = await req.Content.ReadAsAsync<object>();
        var stuData = JsonConvert.DeserializeObject <StudentData>(data?.StudentData.ToString());

        RootObjectNew RootObjectNewObject = new RootObjectNew();
        List<StudentNew> students = new List<StudentNew>();

        foreach (var stu in stuData.Students)
        {
            var stuContacts = JsonConvert.DeserializeObject <List<Contacts>>(stu?.Contacts.ToString());
        }
}

但我不能得到联系。得到错误

解析值时遇到意外的字符:S。路径'',第0行,位置0。

请帮助对结构进行正确的分析。我查看了许多类似的主题,但他们没有帮助我

c# json
2个回答
2
投票

data?.StudentData.ToString()不会给你JSON对象的表示,它只显示它的名字。

试试以下

public class StudentDataContainer 
{
    public StudentData StudentData { get; set; }

}

var data = await req.Content.ReadAsAsync<StudentDataContainer>();

0
投票

我会建议这些课程

    public class Contact
    {
        public string ContactName { get; set; }
        public string ContactEmail { get; set; }
        public bool АvailableContactEmail { get; set; }
        public string ContactMobile { get; set; }
        public bool АvailableContactMobile { get; set; }
    }

    public class Student
    {
        public int StudentId { get; set; }
        public string StudentName { get; set; }
        public List<Contact> Contacts { get; set; }
    }

    public class StudentData
    {
        public List<Student> Students { get; set; }
    }

    public class RootObject
    {
        public StudentData StudentData { get; set; }
    }

然后你就可以做到这一点

     RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
© www.soinside.com 2019 - 2024. All rights reserved.