c# - দৃ strongly়ভাবে টাইপ করা ডেটা ক্লাসে স্থির স্কিমার সাহায্যে মানগুলির অ্যারে যুক্ত অবজেক্টগুলিকে কীভাবে ডিসায়ারাইজ করা যায়?




.net json (2)

একটি নির্দিষ্ট ফর্ম্যাটে কিছু জেএসএন ডেটা ডিসরিয়ালাইজ করার জন্য একটি পরিষ্কার (সম্ভব) উপায় বের করতে আমার কিছুটা সমস্যা হচ্ছে। আমি দৃ strongly়ভাবে টাইপ করা ডেটা অবজেক্ট ক্লাসগুলিতে ডেটাটি ডিসেরায়ালাইজ করতে চাই, এর সুনির্দিষ্টতার ক্ষেত্রে বেশ নমনীয়। ডেটা দেখতে কেমন লাগে তার একটি উদাহরণ এখানে দেওয়া হয়েছে:

{
    "timestamp": 1473730993,
    "total_players": 945,
    "max_score": 8961474,
    "players": {
            "Player1Username": [
            121,
            "somestring",
            679900,
            5,
            4497,
            "anotherString",
            "thirdString",
            "fourthString",
            123,
            22,
            "YetAnotherString"],
        "Player2Username": [
            886,
            "stillAstring",
            1677,
            1,
            9876,
            "alwaysAstring",
            "thirdString",
            "fourthString",
            876,
            77,
            "string"]
        }
}

আমি নির্দিষ্ট অংশগুলি সম্পর্কে নিশ্চিত নই:

  1. খেলোয়াড়দের সংগ্রহ কী অভিধান হিসাবে বিবেচিত হবে? ব্যবহারকারীর নামটি কী হিসাবে পরিবেশন করতে পারে তবে মানটি আমাকে ফেলে দিচ্ছে কারণ এটি স্ট্রিং এবং পূর্ণসংখ্যার মানগুলির মিশ্র সংগ্রহ collection
  2. একজন খেলোয়াড় সম্পূর্ণ নামবিহীন মান নিয়ে গঠিত। আমি JSON ডেটার সাথে প্রায়শই কাজ করেছি যা বৈশিষ্ট্য এবং মানগুলির নাম দিয়েছিল (উদাহরণস্বরূপ, টাইমস্ট্যাম্প, মোট_প্লেয়ার ইত্যাদি) একেবারে শীর্ষে)

বলুন আমার এর মতো শীর্ষ স্তরের শ্রেণি রয়েছে:

public class ScoreboardResults
{
    public int timestamp { get; set; }
    public int total_players { get; set; }
    public int max_score { get; set; }
    public List<Player> players { get; set; }
}

প্লেয়ার অবজেক্টটি কেমন দেখাচ্ছে যে প্রদত্ত মূলত এটি কী / মান হিসাবে কী হিসাবে ব্যবহারকারীর নামটি ব্যবহার করে এবং মানটি মিশ্রিত পূর্ণসংখ্যা এবং স্ট্রিংয়ের সংকলন? প্রতিটি খেলোয়াড়ের উপাদানগুলির ডেটা সর্বদা একই ক্রমে থাকে, সুতরাং আমি জানি যে সংগ্রহের প্রথম মানটি তাদের ইউনিকআইডি, দ্বিতীয় মানটি খেলোয়াড়ের বিবরণ ইত্যাদি I আমি চাই প্লেয়ার শ্রেণিটি এমন কিছু হোক:

public class Player
{
    public string Username { get; set; }
    public int UniqueID { get; set; }
    public string PlayerDescription { get; set; }
    ....
    ....
    .... Following this pattern for all of the values in each player element
    ....
    ....
}

আমি নিশ্চিত যে JSON.NET ব্যবহার করে এটি করা বেশ সহজ সরল কাজ, এ কারণেই আমি কীভাবে এটি সম্পাদন করতে পারি সে সম্পর্কে আমার যে ধারণা ছিল তা এড়াতে চেয়েছিলাম। আমি যা নিয়ে এসেছি তা সিরিয়ালাইজেশন প্রক্রিয়া চলাকালীন অ-মার্জিত এবং সম্ভবত ত্রুটি কিছুটা ডিগ্রিযুক্ত হতে পারে।

সম্পাদনা

snow_FFFFFF পরামর্শ অনুসারে অতীতে জেএসওএন ক্লাস হিসাবে ব্যবহার করার সময় উত্পন্ন শ্রেণিগুলি এখানে রয়েছে:

public class Rootobject
{
    public int timestamp { get; set; }
    public int total_players { get; set; }
    public int max_score { get; set; }
    public Players players { get; set; }
}

public class Players
{
    public object[] Player1Username { get; set; }
    public object[] Player2Username { get; set; }
}

আমার কাছে যা স্পষ্ট নয় তা হল আমি কীভাবে প্লেয়ার 1 ব্যবহারকারীর প্লেয়ার আইটেমটির সাধারণ স্ট্রিং সম্পত্তি হিসাবে প্লেয়ার 1 ব্যবহারকারীর নাম হিসাবে একটি তালিকা হিসাবে "প্লেয়ার" উপাদানটিতে জেএসএন ডেটাটি ডিসরিয়ালাইজ করব। আন্তঃনির্মিত স্ট্রিং এবং পূর্ণসংখ্যা সংগ্রহের ক্ষেত্রে আমি নিশ্চিত যে আমি ইস্যু ছাড়াই প্লেয়ার অবজেক্টের ব্যক্তিগত সম্পত্তিগুলিতে এটি পেতে পারি।


এটা চেষ্টা কর

নীচের মত একটি বর্গ তৈরি করুন

দ্রষ্টব্য: আপনি JSON সম্পর্কিত সমস্ত শ্রেণি তৈরি করতে ভিজ্যুয়াল স্টুডিওতে আটকানো বিশেষ বিকল্পটি ব্যবহার করতে পারেন

সম্পাদনা করুন -> বিশেষ আটকান -> ক্লাস হিসাবে জেসনকে আটকান

এটি JSON সম্পর্কিত সমস্ত শ্রেণি তৈরি করবে

দ্রষ্টব্য: আমি ইতিমধ্যে এই জাতীয় অনুরূপ উত্তর এটি রেফারেন্স করুন ..


শুরু করার একটি ভাল উপায় হ'ল JSON এর উপর ভিত্তি করে ভিজ্যুয়াল স্টুডিওগুলি আপনার ক্লাস তৈরি করতে দেওয়া। একটি ফাঁকা শ্রেণীর ফাইল খুলুন এবং সম্পাদনা -> গত স্পেশাল -> ক্লাস হিসাবে জেএসন পাস করুন।

এটি আপনার জেএসওএনকে সিরিয়ালাইজ / ডিসরিয়ালাইজ করার জন্য প্রয়োজনীয় শ্রেণি (এস) সহ একটি ফাইল তৈরি করবে।





json.net