본문 바로가기
프론트엔드

Unity에서 Json을 사용하는 방법

by 느바 2022. 10. 9.
반응형

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); 
    }
}
반응형

'프론트엔드' 카테고리의 다른 글

Unity Array List Dictionary  (0) 2022.10.10
Action 으로 다른 스크립트 함수 가져오는 방법  (0) 2022.10.10
코루틴  (0) 2022.10.09
TextMeshPro 텍스트 변경 및 한글폰트 설정  (0) 2022.10.02
3D 속성  (0) 2022.08.18