C#:asp.net 3.5:反序列化JSON – 如何获取每个对象字符串?

我知道有其他地方可以给出这个答案,但我想要实现的更复杂,这是我的反序列化代码:

这是例如的json数据:

data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""}"; Dictionary values = JsonConvert.DeserializeObject<Dictionary>(data); List list = new List(values.Keys); // Loop through list foreach (string k in list) { System.Diagnostics.Debug.Print("'{0}', '{1}'", k, values[k]); } 

这将返回ShiftID,2和EmpName,dsdsfs就像你知道的那样!

如果我的json字符串看起来像多个值会发生什么:

 data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""},{""ShiftID"":""4"",""EmpName"":""dsdsfd""}"; 

谢谢!

如果我的json字符串看起来像多个值会发生什么

data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""}, {""ShiftID"":""4"",""EmpName"":""dsdsfd""}";

错误,因为这不是有效的JSON。 你可能意味着:

 data = @"[{""ShiftID"":""2"",""EmpName"":""dsdsfs""},{""ShiftID"":""4"",""EmpName"":""dsdsfd""}]"; 

现在您可以反序列化为一个字典数组:

 var values = JsonConvert.DeserializeObject[]>(data); foreach (var element in values) { foreach (var entry in element) { System.Diagnostics.Debug.Print("'{0}', '{1}'", entry.Key, entry.Value ); } } 

甚至更好,定义一个模型来代表你的实体:

 public class Employee { public string ShiftID { get; set; } public string EmpName { get; set; } } 

现在反序列化为员工列表:

 var employees = JsonConvert.DeserializeObject(data); foreach (var employee in employees) { System.Diagnostics.Debug.Print("'{0}', '{1}'", employee.ShiftID, employee.EmpName ); } } 

那是无效的JSON。 我认为你要找的是一个JSON数组,它将括在括号内的整个字符串… [{“ShiftID”:“2”,…},{“ShiftId”:“3”,. ..}]