Rekonstruovat operace s c#

0

Otázka

Dat jako ten níže pochází z API. Jak mám tento model?

{
   "USD":{
      "satis":"11.4995",
      "alis":"11.4012",
      "degisim":"1,90"
   },
   "EUR":{
      "satis":"12.9252",
      "alis":"12.8265",
      "degisim":"1,37"
   },
   "GBP":{
      "satis":"15.4003",
      "alis":"15.2761",
      "degisim":"1,44"
   },
   "CHF":{
      "satis":"12.3345",
      "alis":"12.2252",
      "degisim":"1,47"
   },
   "CAD":{
      "satis":"9.0611",
      "alis":"8.9809",
      "degisim":"1,58"
   },
   "RUB":{
      "satis":"0.15338",
      "alis":"0.15207",
      "degisim":"-0,14"
   },
   "AED":{
      "satis":"3.1297",
      "alis":"3.1052",
      "degisim":"1,88"
   },
   "AUD":{
      "satis":"8.3101",
      "alis":"8.2403",
      "degisim":"1,79"
   },
   "DKK":{
      "satis":"1.7381",
      "alis":"1.723",
      "degisim":"1,47"
   },
   "SEK":{
      "satis":"1.2798",
      "alis":"1.2685",
      "degisim":"1,52"
   },
   "NOK":{
      "satis":"1.2882",
      "alis":"1.2768",
      "degisim":"1,79"
   },
   "JPY":{
      "satis":"10.0053",
      "alis":"9.9214",
      "degisim":"1,05"
   },
   "KWD":{
      "satis":"37.9655",
      "alis":"37.7194",
      "degisim":"1,97"
   },
   "ZAR":{
      "satis":"0.7253",
      "alis":"0.72",
      "degisim":"1,20"
   },
   "OMR":{
      "satis":"29.7636",
      "alis":"29.7266",
      "degisim":"1,80"
   },
   "MYR":{
      "satis":"2.7464",
      "alis":"2.7261",
      "degisim":"1,83"
   },
   "PHP":{
      "satis":"0.2267",
      "alis":"0.225",
      "degisim":"1,57"
   },
   "QAR":{
      "satis":"3.1567",
      "alis":"3.1329",
      "degisim":"2,54"
   },
   "SYP":{
      "satis":"0.0046",
      "alis":"0.0045",
      "degisim":"2,22"
   },
   "RSD":{
      "satis":"0.1098",
      "alis":"0.1091",
      "degisim":"1,48"
   },
   "UAH":{
      "satis":"0.4286",
      "alis":"0.4256",
      "degisim":"1,06"
   },
   "TWD":{
      "satis":"0.4133",
      "alis":"0.4102",
      "degisim":"1,85"
   },
   "MDL":{
      "satis":"0.6473",
      "alis":"0.6464",
      "degisim":"1,62"
   },
   "PEN":{
      "satis":"2.8543",
      "alis":"2.8481",
      "degisim":"1,78"
   },
   "SGD":{
      "satis":"8.4228",
      "alis":"8.3574",
      "degisim":"1,63"
   },
   "MKD":{
      "satis":"0.2088",
      "alis":"0.209",
      "degisim":"1,02"
   },
   "UYU":{
      "satis":"0.2611",
      "alis":"0.2592",
      "degisim":"2,23"
   },
   "PKR":{
      "satis":"0.0653",
      "alis":"0.0654",
      "degisim":"1,40"
   },
   "THB":{
      "satis":"0.348",
      "alis":"0.3454",
      "degisim":"1,34"
   },
   "SAR":{
      "satis":"3.0694",
      "alis":"3.0359",
      "degisim":"2,15"
   },
   "ILS":{
      "satis":"3.7246",
      "alis":"3.6967",
      "degisim":"2,19"
   },
   "BHD":{
      "satis":"30.2794",
      "alis":"30.461",
      "degisim":"1,91"
   },
   "MXN":{
      "satis":"0.5477",
      "alis":"0.5438",
      "degisim":"1,22"
   },
   "NZD":{
      "satis":"7.9952",
      "alis":"7.933",
      "degisim":"1,31"
   },
   "IRR":{
      "satis":"0.0003",
      "alis":"0.0003",
      "degisim":"0,00"
   },
   "CSK":{
      "satis":"0.5075",
      "alis":"0.5037",
      "degisim":"1,30"
   },
   "BGN":{
      "satis":"6.6045",
      "alis":"6.555",
      "degisim":"1,42"
   },
   "ARS":{
      "satis":"0.1145",
      "alis":"0.1136",
      "degisim":"1,96"
   },
   "BRL":{
      "satis":"2.0518",
      "alis":"2.0356",
      "degisim":"2,02"
   },
   "AZN":{
      "satis":"6.763",
      "alis":"6.7081",
      "degisim":"1,88"
   },
   "CLP":{
      "satis":"0.0142",
      "alis":"0.0141",
      "degisim":"4,41"
   },
   "RON":{
      "satis":"2.609",
      "alis":"2.591",
      "degisim":"1,43"
   },
   "CRC":{
      "satis":"0.0178",
      "alis":"0.018",
      "degisim":"1,71"
   },
   "HKD":{
      "satis":"1.4759",
      "alis":"1.4642",
      "degisim":"1,90"
   },
   "BAM":{
      "satis":"6.5939",
      "alis":"6.6078",
      "degisim":"1,69"
   },
   "ISK":{
      "satis":"0.0872",
      "alis":"0.0867",
      "degisim":"1,28"
   },
   "KZT":{
      "satis":"0.0265",
      "alis":"0.0263",
      "degisim":"1,92"
   },
   "LKR":{
      "satis":"0.0566",
      "alis":"0.0565",
      "degisim":"1,80"
   },
   "DZD":{
      "satis":"0.0825",
      "alis":"0.0822",
      "degisim":"2,23"
   },
   "MAD":{
      "satis":"1.244",
      "alis":"1.2347",
      "degisim":"1,45"
   },
   "JOD":{
      "satis":"16.159",
      "alis":"16.1411",
      "degisim":"1,88"
   },
   "LTL":{
      "satis":"0.976",
      "alis":"0.974",
      "degisim":"0,00"
   },
   "LYD":{
      "satis":"2.4832",
      "alis":"2.4899",
      "degisim":"1,60"
   },
   "INR":{
      "satis":"0.1545",
      "alis":"0.1533",
      "degisim":"1,78"
   },
   "IDR":{
      "satis":"0.0008",
      "alis":"0.0008",
      "degisim":"0,00"
   },
   "IQD":{
      "satis":"0.0079",
      "alis":"0.0078",
      "degisim":"2,60"
   },
   "CNY":{
      "satis":"1.8002",
      "alis":"1.7863",
      "degisim":"1,90"
   },
   "HUF":{
      "satis":"0.0349",
      "alis":"0.0346",
      "degisim":"0,87"
   },
   "BYR":{
      "satis":"0.0002",
      "alis":"0.0002",
      "degisim":"0,00"
   },
   "PLN":{
      "satis":"2.743",
      "alis":"2.7239",
      "degisim":"1,06"
   },
   "EGP":{
      "satis":"0.7295",
      "alis":"0.7276",
      "degisim":"1,81"
   },
   "ALL":{
      "satis":"0.1063",
      "alis":"0.1059",
      "degisim":"1,43"
   },
   "KRW":{
      "satis":"0.0097",
      "alis":"0.0096",
      "degisim":"2,11"
   },
   "COP":{
      "satis":"0.0029",
      "alis":"0.0029",
      "degisim":"0,00"
   },
   "LVL":{
      "satis":"5.4364",
      "alis":"5.4011",
      "degisim":"0,00"
   },
   "HRK":{
      "satis":"1.7179",
      "alis":"1.7051",
      "degisim":"1,36"
   },
   "LBP":{
      "satis":"0.0076",
      "alis":"0.0076",
      "degisim":"2,70"
   },
   "GEL":{
      "satis":"3.6714",
      "alis":"3.6494",
      "degisim":"1,77"
   },
   "DVZSP1":{
      "satis":"12.2124",
      "alis":"12.1139",
      "degisim":"1,62"
   },
   "TND":{
      "satis":"4.0186",
      "alis":"3.9901",
      "degisim":"46,69"
   }
}

moje api kód:

var client = new RestSharp.RestClient("https://api.genelpara.com/embed/doviz.json");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
var veri = JsonSerializer.Deserialize<DigerApiDoviz>(response.Content);

moje modely:

public class DigerApiDoviz
{
    public Doviz doviz { get; set; }
}

public class Doviz
{
    public decimal satis { get; set; }
    public decimal alis { get; set; }
    public decimal degisim { get; set; }
}

I když přijetí dat, je vrácena hodnota null, v "rekonstruovat" operace. protože jsem udělal můj model špatně. To, co je správné modelování proces?

.net c# json model
2021-11-22 20:17:44
1

Nejlepší odpověď

1

Doporučuji slovník model při rekonstrukci a NewtonSoft.Json jako serializátor, protože máte nějaký problém s serializace

Dictionary<string,Doviz> veri = JsonConvert.DeserializeObject<Dictionary<string,Doviz>> (response.Content);

můžete jej použít jako slovník

Doviz dv =veri["USD"];

nebo můžete převést na seznam a pomocí linq

List<DigerApiDoviz> list = veri
.Select(v => new DigerApiDoviz { Name = v.Key, Doviz = v.Value }).ToList();

A protože json obsahuje pouze řetězec vlastnosti, ale c# objekt by měl mít desetinná vlastnosti, je lepší použít konstruktor převést řetězec na desetinné číslo, zejména proto, degisim majetku má neplatný symbol ","

public class Doviz
{
        [JsonProperty("satis")]
        public decimal Satis { get; set; }
    
        [JsonProperty("alis")]
        public decimal Alis { get; set; }
    
        [JsonProperty("degisim")]
        public decimal Degisim { get; set; }

    [JsonConstructor]
    public Doviz (string satis, string alis, string degisim)
    {
        Satis=Convert.ToDecimal(satis);
        Alis=Convert.ToDecimal(alis);
        Degisim= Convert.ToDecimal(degisim.Replace(",","."));
    }
}
public class DigerApiDoviz
{
    public string Name { get; set; }
    public Doviz Doviz { get; set; }
}

2021-11-22 23:29:31

Pokud toto vyřešit váš problém, jsem povzbudit, abyste "přijmout".
Dale K

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................