using JsonSubTypes; using Newtonsoft.Json; using System.Collections; using System.Collections.Generic; using UnityEngine; public static class JSONManager { public static string URIPrefix = "http://mathhub.info/MitM/core/geometry?3DGeometry?"; [JsonConverter(typeof(JsonSubtypes), "kind")] public class MMTTerm { string kind; } public class OMA : MMTTerm { public MMTTerm applicant; public List<MMTTerm> arguments; public string kind = "OMA"; public OMA(MMTTerm applicant, List<MMTTerm> arguments) { this.applicant = applicant; this.arguments = arguments; } } public class OMS : MMTTerm { public string uri; public string kind = "OMS"; public OMS(string uri) { this.uri = URIPrefix + uri; } } public class OMF : MMTTerm { [JsonProperty("float")] public float f; public string kind = "OMF"; public OMF(float f) { this.f = f; } } class DeclarationBody : MMTTerm { MMTTerm original; MMTTerm simplified; string kind = "O/S"; } public class MMTDeclaration { public string label; public MMTTerm tp; public MMTTerm df; } public static MMTDeclaration FromJson(string json) { MMTDeclaration mmtDecl = JsonConvert.DeserializeObject<MMTDeclaration>(json); return mmtDecl; } public static string ToJson(MMTDeclaration mmtDecl) { string json = JsonConvert.SerializeObject(mmtDecl); return json; } }