JsonUtility로 Json 파싱하기
(1) Json Parsing
(2) Json Array Parsing (배열 파싱)
(3) Array of Objects in Json Array Parsing (배열 안에 있는 오브젝트 배열 파싱)
(4) Json Export (파일 출력, 내보내기)
이제 class를 json으로 export 해보자.
foreach에서 id를 각각 1씩 증가시킨 후, 값이 제대로 변경되었는지 확인한다.
File 출력(WriteAllText)를 사용해가 위해 System.IO를 선언한다.
using System.IO;
...
void Start()
{
TextAsset textAsset = Resources.Load<TextAsset>("Json/LottoWinningNumber");
LottoNumbers lottoList = JsonUtility.FromJson<LottoNumbers>(textAsset.text);
foreach (Lotto lt in lottoList.winning)
{
lt.id++; /* 값 변경 */
lt.printNumbers();
Debug.Log("=============");
}
string classToJson = JsonUtility.ToJson(lottoList);
Debug.Log(classToJson);
string fileName = "test.json";
string path = Application.dataPath + "/" + fileName;
File.WriteAllText(path, classToJson);
Debug.Log(path);
}
파일 이름(확장자 json 포함)을 포함한 경로(path)와 출력할 내용을 WriteAllText에 넣어주면 된다.
Application.dataPath는 유니티 프로젝트의 경로에 Assets이 추가된 경로다.
→ [C:/Users/.../[Unity_Project]/Assets]
string fileName = "test.json";
string path = Application.dataPath + "/" + fileName;
File.WriteAllText(path, classToJson);
Debug.Log(path); //C:/Users/.../[Unity_Project]/Assets/test.json
스크립트를 실행해서 test.json 파일을 확인해보자.
id 0이 1로 변경되었다. 하지만 한 줄로 출력되어 읽기가 불편하다.
JsonUtility.ToJson에서 prettyPrint 옵션을 true로 넣어보자.
string classToJson = JsonUtility.ToJson(lottoList, true /* prettyPrint */);
그러면 json이 아래와 같이 정리되어서 보인다.
최종 코드는 아래와 같다.
using System; /* for Serializable */
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class ParsingJson : MonoBehaviour
{
[Serializable]
public class testCase //aray of objects
{
public int test1;
public string test2;
public int[] test3;
}
[Serializable]
public class Lotto
{
public int id;
public string date;
public int[] number;
public int bonus;
public testCase[] test; /* 추가 */
public void printNumbers()
{
string str = "numbers : ";
for (int i = 0; i < 6; i++) str += number[i] + " ";
Debug.Log(str);
Debug.Log("bonus : " + bonus);
for (int i = 0; i < test.Length; i++)
{
Debug.Log("test1: " + test[i].test1);
Debug.Log("test2: " + test[i].test2);
for (int k = 0; k < test[i].test3.Length; k++)
Debug.Log("test3 [" + k + "] " + test[i].test3[k]);
}
}
}
public class LottoNumbers
{
public Lotto[] winning;
}
void Start()
{
TextAsset textAsset = Resources.Load<TextAsset>("Json/LottoWinningNumber");
LottoNumbers lottoList = JsonUtility.FromJson<LottoNumbers>(textAsset.text);
foreach (Lotto lt in lottoList.winning)
{
lt.id++; /* 값 변경 */
lt.printNumbers();
Debug.Log("=============");
}
string classToJson = JsonUtility.ToJson(lottoList, true /* prettyPrint */);
Debug.Log(classToJson);
string fileName = "test.json";
string path = Application.dataPath + "/" + fileName;
File.WriteAllText(path, classToJson);
Debug.Log(path);
}
}
(1) Json Parsing
(2) Json Array Parsing (배열 파싱)
(3) Array of Objects in Json Array Parsing (배열 안에 있는 오브젝트 배열 파싱)
(4) Json Export (파일 출력, 내보내기)
Unity Plus:
Unity Pro:
Unity 프리미엄 학습:
'개발 > Unity' 카테고리의 다른 글
유니티 - 머티리얼 로드하고 바꾸기 (Load and Change Materials) (0) | 2022.06.26 |
---|---|
유니티 디버깅 - Error Pause를 활성화하여 에러 발생 시 게임 멈추기 (0) | 2022.06.26 |
유니티 - JsonUtility로 Json 파싱하기 : (3) 오브젝트 배열 파싱 (0) | 2022.06.25 |
유니티 - 벡터의 내적 / 외적 / 아다마르 곱 (Dot, Cross, Scale) (0) | 2022.06.25 |
유니티 - 비주얼 스튜디오에서 Json 파일 열기 (Open Json file in Visual Studio) (0) | 2022.06.25 |
댓글