将JSON对象转换为动态对象

时间:2014-04-22 07:00:40

标签: 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 _studentName = dObject.StudentName;//works fine
 string[] _subjectCodes= dObject.SubjectCodes;//gives error 'cannot implicitly convert type....'
}

我的要求是将“SubjectCodes”作为字符串数组。如何实现?

3 个答案:

答案 0 :(得分:1)

安装newtonsoft:

Install-Package Newtonsoft.Json

从json转换:

string json = "{ 'StudentName': 'Michael Lumb', 'SubjectCodes': ['1','2'], 'Grade': '3'}";
Student student = JsonConvert.DeserializeObject<Student>(json);

转换为json:

string json = JsonConvert.Serialize(student);

答案 1 :(得分:0)

http://james.newtonking.com/json下载NewtonSoft.dll 它有将数据转换为json文件的方法,反之亦然

答案 2 :(得分:0)

similar StackOverflow question中找到答案。

但是你也应该考虑使用强类型对象:

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]);

C#是一种强类型语言,在可能的情况下,最好用强类型对象描述您的问题域。通过这种方式,您可以获得强类型的好处:编译时错误,重构等。如果json不正确,在尝试反序列化时会立即捕获错误,而不是在以后可能会失败的情况下,在那里它不会立即明显是什么问题是。