[英]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.