C# 将JSON对象转换为动态对象
我需要在后端使用C#获取JSON对象的值。JSON对象如下所示:C# 将JSON对象转换为动态对象,c#,json,json.net,C#,Json,Json.net,我需要在后端使用C#获取JSON对象的值。JSON对象如下所示: { "StudentName": "Michael Lumb", "SubjectCodes": [ "1", "2" ], "Grade": "3"} 我尝试过的代码如下: public string AddStudent(JObject studentData) { dynamic dObject = JObject.Parse(studentData.ToString()); string _stu
{ "StudentName": "Michael Lumb", "SubjectCodes": [ "1", "2" ], "Grade": "3"}
我尝试过的代码如下:
public string AddStudent(JObject studentData)
{
dynamic dObject = JObject.Parse(studentData.ToString());
string _studentName = dObject.StudentName;//works fine
string[] _subjectCodes= dObject.SubjectCodes;//gives error 'cannot implicitly convert type....'
}
我的要求是将“SubjectCodes”作为字符串数组。如何实现这一点?从下载NewtonSoft.dll 它有将数据转换为json文件的方法,反之亦然安装newtonsoft:
Install-Package Newtonsoft.Json
从json转换:
string json = "{ 'StudentName': 'Michael Lumb', 'SubjectCodes': ['1','2'], 'Grade': '3'}";
Student student = JsonConvert.DeserializeObject<Student>(json);
在一篇文章中找到了答案
但您也应该考虑使用强类型对象:
public class Student
{
public string StudentName { get; set; }
public string[] SubjectCodes { get; set; }
public int Grade { get; set; }
}
...
var student = JsonConvert.DeserializeObject<Student>(json);
Console.WriteLine(student.SubjectCodes[0]);
公共班级学生
{
公共字符串StudentName{get;set;}
公共字符串[]主题代码{get;set;}
公共整数等级{get;set;}
}
...
var student=JsonConvert.DeserializeObject(json);
Console.WriteLine(学生主题代码[0]);
C#是一种强类型语言,在可能的情况下,最好用强类型对象描述您的问题域。通过这种方式,您可以获得强类型的好处:编译时错误、重构等。如果json不正确,则在尝试反序列化时会立即捕获错误,而不是在稍后可能失败的情况下立即发现问题所在。JObject是NewtonSoft的json.NET+标记提到json.NET。
public class Student
{
public string StudentName { get; set; }
public string[] SubjectCodes { get; set; }
public int Grade { get; set; }
}
...
var student = JsonConvert.DeserializeObject<Student>(json);
Console.WriteLine(student.SubjectCodes[0]);