using System; using UnityEngine; using System.Collections; using System.Collections.Generic; using System.Linq; using UnityEngine.Networking; namespace Assets.Scripts.API { public class Server { public static string HOST = "http://localhost:8990"; public Server () { } public static List<Score> GetScores () { UnityWebRequest www = UnityWebRequest.Get(HOST + "/scores/"); www.Send(); if (www.isError) { Debug.LogError("Error:" + www.error); return null; } Debug.Log("Got response: " + www.downloadHandler.text); ScoresRes res = JsonUtility.FromJson<ScoresRes>(www.downloadHandler.text); //Debug.Log("Got scores: " + res.scores); string status = "{\"status\":\"ok\"}"; string mockText = "{\"scores\":[{\"playerName\":\"John Smith\",\"team\":null,\"score\":10,\"date\":\"2016-10-23T12:42:54.810Z\",\"_id\":\"d21b623e9b394993be3224de89099194\"}," + "{\"playerName\":\"Randy\",\"team\":\"iGEM Headquarters\",\"score\":42,\"date\":\"2016-10-23T12:45:45.774Z\",\"_id\":\"a3a66de22b30450492f8f6b1bf178123\"}" + "]}"; ScoresRes mock = ScoresRes.CreateFromJson(status, mockText); //TODO: Why does JsonUtility fail to deserialize? /o\ Debug.Log("Mock scores: " + mock); return res.scores; } [System.Serializable] public class ScoresRes { public string status { get; set;} public List<Score> scores { get; set;} public ScoresRes() {} public static ScoresRes CreateFromJson(string status, string scores) { return new ScoresRes { status = status, scores = JsonUtility.FromJson<List<Score>>(scores) }; } public override string ToString() { var s = (from e in scores where e != null select e.ToString()).ToArray(); return "Status: " + status + "Scores:\n" + string.Join(",", s); } } } }