【问题标题】:C# : asp.net 3.5 : Deserialize JSON - how to get each object string?C#:asp.net 3.5:反序列化 JSON - 如何获取每个对象字符串?
【发布时间】:2012-03-31 05:13:37
【问题描述】:

我知道还有其他地方可以给出这个答案,但我想要实现的更复杂,这是我的反序列化代码:

这是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""}";

谢谢!

【问题讨论】:

    标签: c# asp.net json


    【解决方案1】:

    如果我的 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
        );
        }
    }
    

    【讨论】:

    • 好吧,我得到了值,但没有得到列?你有个主意
    • 我需要获取值 ShiftID 和 EmpName 因为它总是不同的东西
    • @user181248,我已经修复了我的第一个代码。它应该是 foreach (var entry in element) 而不是 foreach (string entry in element)
    • 500 错误意味着在您的 ASP.NET 应用程序中某处发生异常。你能调试它吗?
    【解决方案2】:

    那是无效的 JSON。我认为您正在寻找的是一个 JSON 数组,它将您拥有的整个字符串括在括号内... [{“ShiftID”:“2”,...},{“ShiftId”:“3”,。 ..}]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 2021-04-27
      相关资源
      最近更新 更多