동적 키가 있는 객체가 포함된 JSON 데이터로 작업할 때 기존 클래스 역직렬화는 문제가 될 수 있습니다. 이 문서에서는 JSON.NET을 사용하여 이 시나리오를 해결하는 방법을 살펴봅니다.
다음 JSON 데이터를 고려하세요.
{ "users" : { "100034" : { "name" : "tom", "state" : "WA", "id" : "cedf-c56f-18a4-4b1" }, "10045" : { "name" : "steve", "state" : "NY", "id" : "ebb2-92bf-3062-7774" }, "12345" : { "name" : "mike", "state" : "MA", "id" : "fb60-b34f-6dc8-aaf7" } } }
각 개체에 직접 액세스하는 방법 수동 키가 필요 없이 이 데이터에서 파싱?
JSON.NET은 Dictionary
이를 달성하기 위해 다음 두 클래스를 정의합니다.
class RootObject { public Dictionary<string, User> users { get; set; } } class User { public string name { get; set; } public string state { get; set; } public string id { get; set; } }
string json = @" { ""users"": { ""10045"": { ""name"": ""steve"", ""state"": ""NY"", ""id"": ""ebb2-92bf-3062-7774"" }, ""12345"": { ""name"": ""mike"", ""state"": ""MA"", ""id"": ""fb60-b34f-6dc8-aaf7"" }, ""100034"": { ""name"": ""tom"", ""state"": ""WA"", ""id"": ""cedf-c56f-18a4-4b1"" } } }"; RootObject root = JsonConvert.DeserializeObject<RootObject>(json);
다음 코드는 역직렬화된 데이터:
foreach (string key in root.users.Keys) { Console.WriteLine("key: " + key); User user = root.users[key]; Console.WriteLine("name: " + user.name); Console.WriteLine("state: " + user.state); Console.WriteLine("id: " + user.id); Console.WriteLine(); }
코드는 다음과 같은 출력을 생성합니다.
key: 10045 name: steve state: NY id: ebb2-92bf-3062-7774 key: 12345 name: mike state: MA id: fb60-b34f-6dc8-aaf7 key: 100034 name: tom state: WA id: cedf-c56f-18a4-4b1
위 내용은 JSON.NET은 동적 키를 사용하여 JSON을 액세스 가능한 개체로 효율적으로 역직렬화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!