2012-03-14 54 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」,. ..}]

相關問題