{ "0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0": { "доллар США": 0,889768 } }
Выше это то, что я получаю от api монетного геккона, я считаю, что это словарь объекта, который имеет переменную с именем «usd» десятичного типа ??
Вот как выглядит мой код для попытки извлечь данные
public class dm_Testing
{
public decimal usd { get; set; }
}
public class dm_Return_MaticPrice
{
public Dictionary<string, dm_Testing> MaticUSD { get; set; }
= new Dictionary<string, dm_Testing>();
}
Это то, что я использую в процессе
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url_MaticPrice);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//Converting to correct object from json string
string nVal = new StreamReader(response.GetResponseStream()).ReadToEnd();
dm_Return_MaticPrice nTesting = new dm_Return_MaticPrice();
nTesting = JsonConvert.DeserializeObject<dm_Return_MaticPrice>(nVal);
Как бы приложение не ломалось, просто дайте мне 0, а не значение «usd», возвращаемое из API. Любое понимание того, как правильно анализировать эти данные в моей модели с помощью С#?
2 ответа
Другой онлайн-конвертер (https://app.quicktype.io/) сделал почти то же самое:
namespace Stackoverflow
{
using System;
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Serialization;
using System.Globalization;
public partial class Rates
{
[JsonPropertyName("0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0")]
public The0X7D1Afa7B718Fb893Db30A3Abc0Cfc608Aacfebb0 The0X7D1Afa7B718Fb893Db30A3Abc0Cfc608Aacfebb0 { get; set; }
}
public partial class The0X7D1Afa7B718Fb893Db30A3Abc0Cfc608Aacfebb0
{
[JsonPropertyName("usd")]
public double Usd { get; set; }
}
}
И я знал, что это где-то в Visual Studio, но никак не могу вспомнить где, но @Odrai напомнил нам:
Кроме того: скопируйте JSON (строку), откройте Visual Studio, создайте новый (фиктивный) класс, нажмите «Изменить» (панель инструментов), нажмите «Специальная вставка» и «Вставить JSON как классы». Он генерирует класс C# на основе заданного JSON.
Если вы используете Newtonsoft.Json, вы можете извлечь значение usd одной строкой.
var str = "{ \"0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0\": { \"usd\": 0.889768 } }";
decimal? usd = JObject.Parse(str)?.First?.First["usd"]?.Value<decimal>();
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
_url_MaticPrice
.