لحل هذه المشكلة، يمكنك إنشاء كلاسات تمثل الهيكل الذي تريد تحويل ال JSON إليه. يبدو أن ال JSON الذي تحتاج إلى تحليله يحتوي على كائنات متداخلة، لذا ستحتاج إلى استخدام كلاسات متداخلة أيضًا. هناك أداة تسمى json2csharp
يمكنك استخدامها لتوليد الكود المناسب لكلاسات C# من ال JSON.
لنفترض أن ال JSON الذي تحتاج إلى تحليله هو:
json{
"success": true,
"rgInventory": {
"1533133768": {
"id": "1533133768",
"classid": "150853436",
"instanceid": "188540556",
"amount": "1",
"pos": 1
},
"1533133769": {
"id": "1533133769",
"classid": "150853437",
"instanceid": "188540557",
"amount": "1",
"pos": 2
}
},
"rgDescriptions": {
"150853436_188540556": {
"appid": "730",
"classid": "150853436",
"instanceid": "188540556",
"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouLWzKjhzw8zFdC5K092kl5SClMj3PLXFhGpC_Pp8j-3I4IG7i1Hn_UI-Nmj3ItDGe1BoN1mCr1G4xL_vhMS8tcmcn3JhuihwsHvbzQv3309k3tBw8A",
"icon_url_large": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouLWzKjhzw8zFdC5K092kl5SClMj3PLXFhGpC_Pp8j-3I4IG7i1Hn_UI-Nmj3ItDGe1BoN1mCr1G4xL_vhMS8tcmcn3JhuihwsHvbzQv3309k3tBw8A"
},
"150853437_188540557": {
"appid": "730",
"classid": "150853437",
"instanceid": "188540557",
"icon_url": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouLWzKjhzw8zFdC5K092kl5SClMj3PLXFhGpC_Pp8j-3I4IG7i1Hn_UI-Nmj3ItDGe1BoN1mCr1G4xL_vhMS8tcmcn3JhuihwsHvbzQv3309k3tBw8A",
"icon_url_large": "-9a81dlWLwJ2UUGcVs_nsVtzdOEdtWwKGZZLQHTxDZ7I56KU0Zwwo4NUX4oFJZEHLbXH5ApeO4YmlhxYQknCRvCo04DEVlxkKgpouLWzKjhzw8zFdC5K092kl5SClMj3PLXFhGpC_Pp8j-3I4IG7i1Hn_UI-Nmj3ItDGe1BoN1mCr1G4xL_vhMS8tcmcn3JhuihwsHvbzQv3309k3tBw8A"
}
}
}
يمكنك تحويل هذا ال JSON إلى الكلاسات التالية:
csharppublic class RgInventory
{
public Item 1533133768 { get; set; }
public Item 1533133769 { get; set; }
}
public class Item
{
public string id { get; set; }
public string classid { get; set; }
public string instanceid { get; set; }
public string amount { get; set; }
public int pos { get; set; }
}
public class RgDescriptions
{
public Description 150853436_188540556 { get; set; }
public Description 150853437_188540557 { get; set; }
}
public class Description
{
public string appid { get; set; }
public string classid { get; set; }
public string instanceid { get; set; }
public string icon_url { get; set; }
public string icon_url_large { get; set; }
}
public class RootObject
{
public bool success { get; set; }
public RgInventory rgInventory { get; set; }
public RgDescriptions rgDescriptions { get; set; }
}
ثم يمكنك استخدام مكتبة Newtonsoft.Json لتحويل ال JSON إلى كائن C# باستخدام الكود التالي:
csharpstring json = ...; // ال JSON الخاص بك هنا
RootObject root = JsonConvert.DeserializeObject(json);
بعد ذلك، يمكنك الوصول إلى القيم داخل الكائن root
للحصول على قيم الكائنات في ال JSON.
المزيد من المعلومات
بالطبع! يمكننا إضافة بعض المعلومات الإضافية حول كيفية استخدام مكتبة Newtonsoft.Json لتحويل ال JSON إلى كائن C# واستخدام القيم في تطبيقك:
-
تحويل ال JSON إلى كائن C#: استخدم الدالة
JsonConvert.DeserializeObject
لتحويل ال JSON إلى كائن C#. يجب تحديد النوع الذي تريد تحويل ال JSON إليه بين قوسين زاويين() <>
. على سبيل المثال:csharpRootObject root = JsonConvert.DeserializeObject
(json); -
الوصول إلى القيم في الكائن C#: بعد تحويل ال JSON إلى كائن C#، يمكنك الوصول إلى القيم داخل الكائن باستخدام البيانات النمطية. على سبيل المثال، إذا أردت الوصول إلى قيمة
icon_url
في الكائنDescription
، يمكنك استخدام الكود التالي:csharpstring iconUrl = root.rgDescriptions.150853436_188540556.icon_url;
-
التعامل مع الكائنات المتداخلة: في حال كان لديك كائنات متداخلة في ال JSON، يمكنك بسهولة الوصول إليها عن طريق تتبع الهيكل الذي تم تحديده في كلاساتك. على سبيل المثال، إذا كان لديك كائن
rgInventory
يحتوي على عدة كائنات فرعية، يمكنك الوصول إلى أحد الكائنات الفرعية بالشكل التالي:csharpItem item = root.rgInventory.1533133768;
-
التعامل مع JSON متغير: إذا كنت تتعامل مع JSON متغير ولا تعرف بالضبط الهيكل الدقيق له، يمكنك استخدام كائن
JObject
من Newtonsoft.Json للوصول إلى القيم بشكل ديناميكي. على سبيل المثال:csharpJObject jsonObject = JObject.Parse(json); string iconUrl = (string)jsonObject["rgDescriptions"]["150853436_188540556"]["icon_url"];
في هذا المثال، يتم الوصول إلى قيمة
icon_url
في الكائنDescription
دون الحاجة إلى تحديد هيكل الكائنات مسبقًا في كلاس C#.
هذه بعض الطرق التي يمكنك استخدامها لتحويل واستخدام ال JSON في تطبيقك باستخدام مكتبة Newtonsoft.Json في C#.