0

こんにちは、この json をデシリアライズするのに問題があります

{
    "166": {
        "uid": "166",
        "name": "test",
        "mail": "test@test.com"
    },
    "167": {
        "uid": "167",
        "name": "test",
        "mail": "test@test.com"
    },
    "168": {
        "uid": "168",
        "name": "test",
        "mail": "test@test.com"
    }
}

私は json.net を使用してすべてのユーザーを取得しますが、最初の要素は常にその名前を変更しています。

それをどのように扱うか考えていますか?

4

1 に答える 1

1

この状況は、次のように定義されDictionary<string, User>たクラスがあると仮定して、 にデシリアライズすることで処理できます。User

public class User
{
    public string uid { get; set; }
    public string name { get; set; }
    public string mail { get; set; }
}

ここにデモがあります:

class Program
{
    static void Main(string[] args)
    {
        string json = @"
        {
            ""166"": {
                ""uid"": ""166"",
                ""name"": ""Joe"",
                ""mail"": ""joe@example.org""
            },
            ""167"": {
                ""uid"": ""167"",
                ""name"": ""Pete"",
                ""mail"": ""pete@example.org""
            },
            ""168"": {
                ""uid"": ""168"",
                ""name"": ""Fred"",
                ""mail"": ""fred@example.org""
            }
        }";

        Dictionary<string, User> users = 
            JsonConvert.DeserializeObject<Dictionary<string, User>>(json);

        foreach (KeyValuePair<string, User> kvp in users)
        {
            Console.WriteLine(kvp.Key);
            Console.WriteLine("  uid:  " + kvp.Value.uid);
            Console.WriteLine("  name: " + kvp.Value.name);
            Console.WriteLine("  mail: " + kvp.Value.mail);
        }
    }
}

出力は次のとおりです。

166
  uid:  166
  name: Joe
  mail: joe@example.org
167
  uid:  167
  name: Pete
  mail: pete@example.org
168
  uid:  168
  name: Fred
  mail: fred@example.org
于 2013-10-31T22:38:39.987 に答える