public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } JObject o = JObject.Load(reader); foreach (var x in o) { var dataToken = x.Value["data"]; // For some reason, some games treat this as an array? For example, App ID 380 has an empty array here. I don't know how to simultaneously serialize this to an object and an array, so just ignore the weird arrays. var linuxRequirementsToken = dataToken["linux_requirements"]; if (linuxRequirementsToken != null && linuxRequirementsToken.Type == JTokenType.Array) { dataToken["linux_requirements"] = null; } var dataObject = dataToken.ToObject <Data>(); var successValue = x.Value["success"].ToObject <bool>(); AppDetailsContainer appDetailsContainer = new AppDetailsContainer { Data = dataObject, Success = successValue }; return(appDetailsContainer); } return(null); }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { if (reader.TokenType == JsonToken.Null) { return(null); } JObject o = JObject.Load(reader); foreach (var x in o) { // Edit by Jir : Previously returning Data; should return the correct object AppDetailsContainer instead. Sorry for ugly code var data = x.Value["data"].ToObject <Data>(); var success = x.Value["success"].ToObject <bool>(); AppDetailsContainer appDetailsContainer = new AppDetailsContainer { Data = data, Success = success }; return(appDetailsContainer); // return data; } return(null); }