簡體   English   中英

C#:asp.net 3.5:反序列化JSON-如何獲取每個對象字符串?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM