[英]C# : asp.net 3.5 : Deserialize JSON - how to get each object string?
我知道還有其他地方可以給出這個答案,但是我要實現的目標卻更加復雜,這是我反序列化的代碼:
這是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""}";
謝謝!
如果我的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
);
}
}
多數民眾贊成在無效的JSON。 我認為您正在尋找的是JSON數組,它將把您擁有的整個字符串括在方括號內……[{“ ShiftID”:“ 2”,...},{“ ShiftId”:“ 3”,。 ..}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.