C#:asp.net 3.5:反序列化JSON-如何获取每个对象字符串
本文关键字:获取 字符串 对象 net asp 反序列化 JSON- 何获取 | 更新日期: 2023-09-27 18:27:52
我知道还有其他地方可以给出这个答案,但我试图实现的更复杂,这是我的反序列化代码:
这是示例的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",…}]