我知道还有其他地方可以给出这个答案,但我想要实现的更复杂,这是我的反序列化代码:
这是例如的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""}";
谢谢!
答案 0 :(得分: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
);
}
}
答案 1 :(得分:0)
这是无效的JSON。我认为你要找的是一个JSON数组,它将括号内的整个字符串括起来...... [{&#34; ShiftID&#34;:&#34; 2&#34;,...}, {&#34; ShiftId&#34;:&#34; 3&#34;,...}]