ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Unity에서 Json을 사용하는 방법
    3D/Unity 2022. 10. 9. 18:14
    728x90

    Unity에서 Json을 사용하는 방법

    1. Json string을 만드는 방법

    1.1. class를 만든다.

    1.2. JsonUtility.ToJson(클래스의 인스턴스)

     

    2. Json string을 class로 변환하는 방법

    2.1. JsonUtility.FromJson<클래스명>(json 변수명)

     

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class SmartTag
    {
        public string tagId;
        public string tagName;
        public string locationType;
        public int posX;
        public int posY;
        public int posZ;
        public string assetTypeIcon;
    }
    
    public class Test : MonoBehaviour
    {
        void Start()
        {
            SmartTag tag = new SmartTag();
            tag.tagId = "001";
            tag.tagName = "태그1";
            string tag_json = JsonUtility.ToJson(tag);
            print(tag_json);
            
            SmartTag tag_class = JsonUtility.FromJson<SmartTag>(tag_json);
            print(tag_class);
            print(tag_class.tagId);
            print(tag_class.tagName);
        }
    }

    3. http 통신에서 받은 Json 사용하는 방법

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.Networking;
    
    [System.Serializable] 
    class SmartTagRoot
    {
        public List<SmartTag> tags;
    }
    [System.Serializable]
    class SmartTag
    {
        public string tagId;
        public string tagName;
        public string locationType;
        public int posX;
        public int posY;
        public int posZ;
        public string assetTypeIcon;
    }
    
    public class NetworkTest : MonoBehaviour
    {
     
        void Start()
        {
            
            StartCoroutine(doUpdate());
        }
    
        IEnumerator doUpdate()
        {
            while(true)
            {            
                StartCoroutine(ServerRequest());
                yield return new WaitForSeconds(1f);
            }
        }  
    
        IEnumerator ServerRequest()
        {
            string url = "";
            UnityWebRequest www = UnityWebRequest.Get(url);
            yield return www.SendWebRequest();         
    
            if (www.error == null)
            {
                var tagData = JsonUtility.FromJson<SmartTagRoot>(www.downloadHandler.text);
                print("Tag Count : " + tagData.tags.Count);            
            }    
            else Debug.LogError(www.error); 
        }
    }
    728x90

    '3D > Unity' 카테고리의 다른 글

    Unity ColorUtility  (0) 2022.10.11
    Unity Array List Dictionary  (0) 2022.10.10
    Action 으로 다른 스크립트 함수 가져오는 방법  (0) 2022.10.10
    코루틴  (0) 2022.10.09
    TextMeshPro 텍스트 변경 및 한글폰트 설정  (0) 2022.10.02
Designed by Tistory.