[Unity] Unity에서 Json 딕셔너리 읽기

강상훈·2023년 2월 9일
0

Unity

목록 보기
3/11

Installation

com.unity.nuget.newtonsoft-json

  • JsonUtility는 구닥다리다.
  • Dictionary 같은 복잡한 자료구조를 읽지 못한다.
  • JsonConvert를 쓰자.

Usage

Utilities.cs <- JsonConvert 클래스 래핑 직접 씀

using System.IO;
using Newtonsoft.Json;

public static class Json {
  public static string ReadJson(string path, string fileName) {
    return File.ReadAllText(path + fileName);
  }
  public static void WriteJson(string jsonString, string fileName) {
    File.WriteAllText("Resources/" + fileName, jsonString);
  }

  public static string ToJson<T>(T data) {
    return JsonConvert.SerializeObject(data);
  }

  public static T FromJson<T>(string jsonString) {
    return JsonConvert.DeserializeObject<T>(jsonString);
  }
}

Example

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

public class VideoStatements : MonoBehaviour {
  private Dictionary<string, PlaysData> plays = new();
  private List<InvoicesData> invoices = new();

  void Start() {
    string playsJson = Json.ReadJson("Resources/", "plays.json");
    plays = Json.FromJson<Dictionary<string, PlaysData>>(playsJson);

    string invoicesJson = Json.ReadJson("Resources/", "invoices.json");
    invoices = Json.FromJson<List<InvoicesData>>(invoicesJson);
  }
}

public class PlaysData {
  public string name;
  public string type;
}

public class InvoicesData {
  public string customer;
  public List<Performance> performances;

  public class Performance {
    public string playID;
    public int audience;
  }
}
  • json 파일은 여기서 받으면 된다.
  • 다운받아서 Resources 폴더에 넣거나 위에 스크립트 경로를 수정.
profile
https://totohoon01.tistory.com/

0개의 댓글