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”,. ..}]