यूनिटी कोड में JSON के साथ काम करने का अंतर्निहित तरीका

JSON (जावास्क्रिप्ट ऑब्जेक्ट नोटेशन) एक व्यापक रूप से उपयोग किया जाने वाला डेटा इंटरचेंज प्रारूप है, और इसे Unity में एकीकृत करना कॉन्फ़िगरेशन को संभालने, गेम की प्रगति को सहेजने या बाहरी सेवाओं के साथ डेटा का आदान-प्रदान करने के लिए शक्तिशाली हो सकता है। यह मार्गदर्शिका आपको Unity में JSON के साथ काम करने के बुनियादी सिद्धांतों के बारे में बताती है।

चरण 1: JSON को समझना

JSON में कुंजी-मूल्य जोड़े और नेस्टेड संरचनाएं शामिल हैं।

चरण 2: Unity कोड में JSON के साथ कार्य करना

Unity अपने 'JsonUtility' वर्ग के माध्यम से JSON क्रमबद्धता और डिसेरिएलाइज़ेशन को सरल बनाता है। यह मार्गदर्शिका बाहरी लाइब्रेरी के बिना Unity में JSON के साथ काम करने के बुनियादी चरणों को दर्शाती है।

  • एक JSON संरचना बनाएं:
{
  "playerName": "John Doe",
  "playerLevel": 5,
  "inventory": ["sword", "shield"]
}
  • क्रमांकन - C# ऑब्जेक्ट को JSON में परिवर्तित करना:
using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
    public string[] inventory;
}

public class SerializationExample : MonoBehaviour
{
    void Start()
    {
        PlayerData playerData = new PlayerData
        {
            playerName = "John Doe",
            playerLevel = 5,
            inventory = new string[] { "sword", "shield" }
        };

        string json = JsonUtility.ToJson(playerData);
        Debug.Log(json);
    }
}
  • अक्रमांकन - JSON को C# ऑब्जेक्ट में परिवर्तित करना:
using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
    public string[] inventory;
}

public class DeserializationExample : MonoBehaviour
{
    void Start()
    {
        string jsonData = "{\"playerName\":\"John Doe\",\"playerLevel\":5,\"inventory\":[\"sword\",\"shield\"]}";
        PlayerData playerData = JsonUtility.FromJson<PlayerData>(jsonData);

        Debug.Log($"Name: {playerData.playerName}, Level: {playerData.playerLevel}");
        Debug.Log("Inventory: " + string.Join(", ", playerData.inventory));
    }
}

ज्ञात सीमाएँ

'JsonUtility' रैपिंग क्लास के बिना वस्तुओं के शीर्ष-स्तरीय सरणियों (उदाहरण के लिए, '[{},{},{}]') के क्रमांकन और डिसेरिएलाइज़ेशन का सीधे समर्थन नहीं करता है। इसके आसपास काम करने के लिए, आप सरणी को लपेटने के लिए एक सहायक वर्ग का उपयोग कर सकते हैं। यहाँ एक उदाहरण है:

using UnityEngine;

[System.Serializable]
public class PlayerData
{
    public string playerName;
    public int playerLevel;
}

[System.Serializable]
public class PlayerDataArrayWrapper
{
    public PlayerData[] players;
}

public class TopLevelArrayExample : MonoBehaviour
{
    void Start()
    {
        // Serialization: Converting C# Object Array to JSON
        PlayerData[] players = new PlayerData[]
        {
            new PlayerData { playerName = "John Doe", playerLevel = 5 },
            new PlayerData { playerName = "Jane Smith", playerLevel = 8 }
        };

        PlayerDataArrayWrapper wrapper = new PlayerDataArrayWrapper { players = players };
        string json = JsonUtility.ToJson(wrapper);
        Debug.Log(json);

        // Deserialization: Converting JSON to C# Object Array
        string jsonData = "{\"players\":[{\"playerName\":\"John Doe\",\"playerLevel\":5},{\"playerName\":\"Jane Smith\",\"playerLevel\":8}]}";
        PlayerDataArrayWrapper deserializedData = JsonUtility.FromJson<PlayerDataArrayWrapper>(jsonData);

        foreach (var player in deserializedData.players)
        {
            Debug.Log($"Name: {player.playerName}, Level: {player.playerLevel}");
        }
    }
}

उपरोक्त उदाहरण में, 'PlayerDataArrayWrapper' क्लास का उपयोग क्रमबद्ध और डीसेरिएलाइज़ करते समय सरणी को लपेटने के लिए किया जाता है। 'JsonUtility' में वस्तुओं के शीर्ष-स्तरीय सरणियों से निपटते समय ऐसे रैपर वर्ग बनाना एक आम बात है।

निष्कर्ष

'JsonUtility' बाहरी पुस्तकालयों के बिना सीधे JSON क्रमबद्धता और अक्रमांकन को सरल बनाता है। Unity परियोजनाओं में सीधे JSON संचालन के लिए इस मूल दृष्टिकोण का उपयोग करें।

लिंक
Unity 6