c# - كيف يمكنني إزالة عنصر كائن مع أسماء مفاتيح ديناميكية(رقمية)؟




json json.net (2)

  1. إضافة حزمة System.Web.Script.Serialization؛

  2. على افتراض أن جسون يحتوي على قائمة مستخدمي الإنترنت أنا إنشاء فئة مثل هذا ..

    public class internet
    {
       public List<User> Users { get; set; }
    };
    public class User
    {
       public String Name { get; set; }
       public String Id { get; set; }
       public String State { get; set; }
    };

على افتراض أن سلسلة جسون الخاص بك في المتغير 'جسونداتا' اتبع التعليمات البرمجية أدناه ل دي تسلسلي البيانات جسون إلى كائنات فئة.

     var JSONDATA = /* Your JSON String */;
     JavaScriptSerializer serializer = new JavaScriptSerializer();
     internet Intr = serializer.Deserialize<internet>(JSONDATA);

كيف يمكنني إزالة تسلسل بيانات جسون هذه؟ مفاتيح "100034" الخ دينامية في الطبيعة.

{
    "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"
        }
    }
}

هل هناك طريقة يمكنني الوصول مباشرة لكل كائن وجود اسم والدولة ومعرف؟


أعلن فصولك مثل هذا:

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; }
}

ديسيرياليز مثل هذا:

RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);

عرض:

class Program
{
    static void Main(string[] args)
    {
        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