(Unity) Json 형식 txt 파일로 로컬에 저장하기

고현서·2022년 12월 7일
1

Json

목록 보기
3/4

앞에서 했던 Monster의 예시로 Json을 파싱하여 txt파일로 저장해보자.
JsonUtility를 활용하여 string 형식으로 변환 후,
File.WriteAllText를 사용하여 File형식으로 로컬에 저장할 것이다.

전체 코드 (MonsterJson.cs)

using System.Collections.Generic;
using UnityEngine;
using System.IO;
using System;

[Serializable]
public class Monster
{
    public string Name;
    public string AttackType;
    public float Power;
    public int Age;
}

[Serializable]
public class MonsterList
{
    public List<Monster> monsters;
}

public class MonsterJson : MonoBehaviour
{
    private void Start()
    {
        List<Monster> monsterList= new List<Monster>();

        Monster zombie = new Monster();
        zombie.Name = "Zombie";
        zombie.AttackType = "Bite";
        zombie.Power = 10;
        zombie.Age = 100;

        Monster wizard = new Monster();
        wizard.Name = "Wizard";
        wizard.AttackType = "Magic";
        wizard.Power = 30;
        wizard.Age = 30;

        Monster dracula = new Monster();
        dracula.Name = "Dracula";
        dracula.AttackType = "Bite";
        dracula.Power = 20.5f;
        dracula.Age = 10000;

        monsterList.Add(wizard);
        monsterList.Add(dracula);
        monsterList.Add(zombie);

        MonsterList Monster = new MonsterList();
        Monster.monsters = monsterList;

        //ToJson 부분
        string jsonData = JsonUtility.ToJson(Monster, true);

        string path = Application.dataPath + "/Data";
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        File.WriteAllText(path + "/MonsterData.txt", jsonData);

        //FromJson 부분
        string fromJsonData = File.ReadAllText(path + "/MonsterData.txt");

        MonsterList MonsterFromJson = new MonsterList();
        MonsterFromJson = JsonUtility.FromJson<MonsterList>(fromJsonData);
    }

}

path는 Application.dataPath + "/Data"라는 폴더 안에 MonsterData라는 이름의 txt파일로 저장했다.
참고로, 여기서 Application.dataPath는 기기에 따라 다르다.

단, 여기서 IOS 모바일 안의 로컬에 쓰고 싶다면,
Application.persistentDataPath를 사용하자.

	string path = Application.dataPath + "/Data";
	if (!Directory.Exists(path))
	{
		Directory.CreateDirectory(path);
	}

이 부분은 해당 경로의 Directory가 없을 경우 해당 경로에 Directory를 만들어 준다는 이야기이다.

파일과 관련된 이야기는 후에 자세히 풀어줄 예정이다.


        //ToJson 부분
        string jsonData = JsonUtility.ToJson(Monster, true);

        string path = Application.dataPath + "/Data";
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        File.WriteAllText(path + "/MonsterData.txt", jsonData);

        //FromJson 부분
        string fromJsonData = File.ReadAllText(path + "/MonsterData.txt");

        MonsterList MonsterFromJson = new MonsterList();
        MonsterFromJson = JsonUtility.FromJson<MonsterList>(fromJsonData);

1. ToJson

JsonUtility를 활용해 특정 데이터를 json 형식으로 파싱하여 string으로 가져온다.
그리고 File.WriteAllText 메소드를 활용하여 해당 경로로, string 형식의 data를 넣어서 txt 파일을 로컬에 쓸 수 있다.

FromJson

읽어들이는 부분은 특정 경로의 txt파일을 File.ReadAllText를 활용해 string 형식으로 데이터를 가져오고, 이를 JsonUtility를 활용해 내가 원하는 타입으로 파싱할 수 있다.

profile
New 현또의 코딩세상 / Unity 개발자

2개의 댓글

comment-user-thumbnail
2022년 12월 11일

파일 관련 블로그 기대되네욤ㅎㅎㅎ

1개의 답글