2012-03-14 56 views
0

我知道有其他地方,让这个答案,但我想实现是比较复杂的,这是我解串代码:C#:asp.net 3.5:反序列化JSON - 如何获取每个对象字符串?

这是为例JSON数据:

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

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); 
List<string> list = new List<string>(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""}"; 

谢谢!

回答

5

如果我的JSON字符串看起来像这样具有多个值

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

错误,因为这不是有效的JSON发生什么事。你大概的意思是:

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

现在你可以反序列化到词典的数组:

var values = JsonConvert.DeserializeObject<Dictionary<string, string>[]>(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<Employee[]>(data); 
foreach (var employee in employees) 
{ 
    System.Diagnostics.Debug.Print("'{0}', '{1}'", 
     employee.ShiftID, 
     employee.EmpName 
    ); 
    } 
} 
+0

你的亲!谢谢 – user181248 2012-03-14 18:36:37

+0

那么我得到的价值,但不是列?你有一个想法 – user181248 2012-03-14 19:11:49

+0

我需要得到的值ShiftID和EmpName,因为它总是会有所不同 – user181248 2012-03-14 19:19:08

0

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

相关问题