public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { SwitcheoTokensList tokensList = new SwitcheoTokensList(); if (reader.TokenType == JsonToken.StartObject) { JObject rootObject = JObject.Load(reader); tokensList.Tokens = new SwitcheoToken[rootObject.Children().Count()]; int tabIndex = 0; foreach (JProperty token in rootObject.Children()) { var tokenName = token.Name; var tokenInfos = (JObject)token.Value; var tokenHash = tokenInfos.GetValue("hash"); var tokenDecimals = tokenInfos.GetValue("decimals"); var isTradingActive = tokenInfos.GetValue("trading_active"); tokensList.Tokens[tabIndex] = new SwitcheoToken() { Symbol = tokenName, Id = (string)tokenHash, Precision = !tokenDecimals.IsNullOrEmpty() ? (int)tokenDecimals : -1, IsTradingActive = (bool)isTradingActive }; tabIndex++; } } return(tokensList); }
public void GetTokens_Should_RespondWithTokensArray() { // arrange var tokensList = new SwitcheoTokensList() { Tokens = SampleTokensList }; var client = PrepareClient(JsonConvert.SerializeObject(tokensList)); // act var result = client.GetTokens(); // assert Assert.AreEqual(true, result.Success); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(tokensList.Tokens[0], result.Data.Tokens[0])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(tokensList.Tokens[1], result.Data.Tokens[1])); Assert.IsTrue(Compare.PublicInstancePropertiesEqual(tokensList.Tokens[2], result.Data.Tokens[2])); }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { writer.WriteStartObject(); SwitcheoTokensList tokensList = (SwitcheoTokensList)value; foreach (SwitcheoToken token in tokensList.Tokens) { writer.WritePropertyName(token.Symbol); writer.WriteStartObject(); writer.WritePropertyName("hash"); writer.WriteValue(token.Id); writer.WritePropertyName("decimals"); writer.WriteValue(token.Precision); writer.WritePropertyName("trading_active"); writer.WriteValue(token.IsTradingActive); writer.WriteEndObject(); } writer.WriteEndObject(); }