using System; using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Networking; namespace XCharts.Runtime { public static class JsonUtil { public static IEnumerator GetWebJson(string url, Action callback) { var www = UnityWebRequest.Get(url); yield return www; #if UNITY_2020_1_OR_NEWER if (www.result != UnityWebRequest.Result.Success) #else if (www.isNetworkError || www.isHttpError) #endif { Debug.LogError("GetWebJson Error: " + www.error); } else { var json = www.downloadHandler.text.Trim(); callback(GetJsonArray(json)); www.Dispose(); } } public static IEnumerator GetWebJson(string url, Action callback) { var www = UnityWebRequest.Get(url); yield return www; #if UNITY_2020_1_OR_NEWER if (www.result != UnityWebRequest.Result.Success) #else if (www.isNetworkError || www.isHttpError) #endif { Debug.LogError("GetWebJson Error: " + www.error); } else { var json = www.downloadHandler.text.Trim(); callback(GetJsonObject(json)); www.Dispose(); } } public static T GetJsonObject(string json) { return JsonUtility.FromJson(json); } public static T[] GetJsonArray(string json) { string newJson = "{ \"array\": " + json + "}"; Wrapper wrapper = JsonUtility.FromJson>(newJson); return wrapper.array; } [Serializable] private class Wrapper { #pragma warning disable 0649 public T[] array; #pragma warning restore 0649 } } }