Systém.Text.Json - Nelze rekonstruovat

0

Otázka

Používám System.Text.Json a z nějakého důvodu to nedávno zlomil a nechce rekonstruovat. To je výjimka, začínám:

{"JSON hodnota nemůže být převeden na QSGEngine.Web.Výměn.Výměn.Binance.AccountTradeResponse. Path: $ | LineNumber: 0 | BytePositionInLine: 1."}

Také bych chtěl vědět, jak to udělat správné zpracování chyb, protože se používá k házet InvalidOperationException (bez proudu try catch blok) a sotva jsem zjistila, že skutečnou rekonstrukci bylo příčinou to.

Exekutor

try
{
    var asd = JsonSerializer.Deserialize<T>(json, new JsonSerializerOptions
    {
        PropertyNameCaseInsensitive = true,
        NumberHandling = JsonNumberHandling.AllowReadingFromString
    });
}
catch (Exception ex)
{
    Console.WriteLine(ex);
    throw;
}

Model

public class AccountTradeResponse
{
    /// <summary>
    ///     The symbol the trade is for.
    /// </summary>
    public string? Symbol { get; set; }

    /// <summary>
    ///     The id of the trade.
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    ///     The order id the trade belongs to.
    /// </summary>
    public long OrderId { get; set; }

    /// <summary>
    ///     Id of the order list this order belongs to.
    /// </summary>
    public long OrderListId { get; set; }

    /// <summary>
    ///     The price of the trade.
    /// </summary>
    public decimal Price { get; set; }

    /// <summary>
    ///     The quantity of the trade.
    /// </summary>
    [JsonPropertyName("qty")]
    public decimal Quantity { get; set; }

    /// <summary>
    ///     The quote quantity of the trade.
    /// </summary>
    [JsonPropertyName("quoteQty")]
    public decimal QuoteQuantity { get; set; }

    /// <summary>
    ///     The commission paid for the trade.
    /// </summary>
    public decimal Commission { get; set; }

    /// <summary>
    ///     The asset the commission is paid in.
    /// </summary>
    public string CommissionAsset { get; set; } = string.Empty;

    /// <summary>
    ///     The time the trade was made.
    /// </summary>
    [JsonPropertyName("time")]
    [JsonConverter(typeof(UnixEpochDateTimeConverter))]
    public DateTime TradeTime { get; set; }

    /// <summary>
    ///     Whether account was the buyer in the trade.
    /// </summary>
    public bool IsBuyer { get; set; }

    /// <summary>
    ///     Whether account was the maker in the trade.
    /// </summary>
    public bool IsMaker { get; set; }

    /// <summary>
    ///     Whether trade was made with the best match.
    /// </summary>
    public bool IsBestMatch { get; set; }
}

JSON

[
    {
        "symbol": "DOGEUSDT",
        "id": 204483102,
        "orderId": 966983423,
        "orderListId": -1,
        "price": "0.50374000",
        "qty": "1610.10000000",
        "quoteQty": "811.07177400",
        "commission": "0.00091971",
        "commissionAsset": "BNB",
        "time": 1620808028965,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204483833,
        "orderId": 966986806,
        "orderListId": -1,
        "price": "0.50377000",
        "qty": "751.40000000",
        "quoteQty": "378.53277800",
        "commission": "0.00042795",
        "commissionAsset": "BNB",
        "time": 1620808052680,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204483834,
        "orderId": 966986806,
        "orderListId": -1,
        "price": "0.50378000",
        "qty": "451.10000000",
        "quoteQty": "227.25515800",
        "commission": "0.00025692",
        "commissionAsset": "BNB",
        "time": 1620808052680,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204483835,
        "orderId": 966986806,
        "orderListId": -1,
        "price": "0.50379000",
        "qty": "846.60000000",
        "quoteQty": "426.50861400",
        "commission": "0.00048216",
        "commissionAsset": "BNB",
        "time": 1620808052680,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204550496,
        "orderId": 967283575,
        "orderListId": -1,
        "price": "0.49833000",
        "qty": "1343.90000000",
        "quoteQty": "669.70568700",
        "commission": "0.00075325",
        "commissionAsset": "BNB",
        "time": 1620810257212,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204550497,
        "orderId": 967283575,
        "orderListId": -1,
        "price": "0.49831000",
        "qty": "705.30000000",
        "quoteQty": "351.45804300",
        "commission": "0.00039530",
        "commissionAsset": "BNB",
        "time": 1620810257212,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204555645,
        "orderId": 967309447,
        "orderListId": -1,
        "price": "0.49957000",
        "qty": "243.50000000",
        "quoteQty": "121.64529500",
        "commission": "0.00013686",
        "commissionAsset": "BNB",
        "time": 1620810455874,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204555646,
        "orderId": 967309447,
        "orderListId": -1,
        "price": "0.49957000",
        "qty": "1200.00000000",
        "quoteQty": "599.48400000",
        "commission": "0.00067450",
        "commissionAsset": "BNB",
        "time": 1620810455874,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 204555647,
        "orderId": 967309447,
        "orderListId": -1,
        "price": "0.49957000",
        "qty": "600.70000000",
        "quoteQty": "300.09169900",
        "commission": "0.00033764",
        "commissionAsset": "BNB",
        "time": 1620810455874,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 205319583,
        "orderId": 970888125,
        "orderListId": -1,
        "price": "0.44893000",
        "qty": "2789.50000000",
        "quoteQty": "1252.29023500",
        "commission": "0.00148158",
        "commissionAsset": "BNB",
        "time": 1620837978895,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 205319584,
        "orderId": 970888125,
        "orderListId": -1,
        "price": "0.44892000",
        "qty": "864.70000000",
        "quoteQty": "388.18112400",
        "commission": "0.00045925",
        "commissionAsset": "BNB",
        "time": 1620837978895,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 205329838,
        "orderId": 970925901,
        "orderListId": -1,
        "price": "0.45696000",
        "qty": "600.00000000",
        "quoteQty": "274.17600000",
        "commission": "0.00032178",
        "commissionAsset": "BNB",
        "time": 1620838119542,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 205329839,
        "orderId": 970925901,
        "orderListId": -1,
        "price": "0.45698000",
        "qty": "2989.80000000",
        "quoteQty": "1366.27880400",
        "commission": "0.00160345",
        "commissionAsset": "BNB",
        "time": 1620838119542,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823718,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40569000",
        "qty": "1232.10000000",
        "quoteQty": "499.85064900",
        "commission": "0.00062775",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823719,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40568000",
        "qty": "214.60000000",
        "quoteQty": "87.05892800",
        "commission": "0.00010933",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823720,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40566000",
        "qty": "1283.50000000",
        "quoteQty": "520.66461000",
        "commission": "0.00065388",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823721,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40565000",
        "qty": "246.40000000",
        "quoteQty": "99.95216000",
        "commission": "0.00012552",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823722,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40565000",
        "qty": "246.40000000",
        "quoteQty": "99.95216000",
        "commission": "0.00012552",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823723,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40565000",
        "qty": "246.40000000",
        "quoteQty": "99.95216000",
        "commission": "0.00012552",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207823724,
        "orderId": 980565418,
        "orderListId": -1,
        "price": "0.40565000",
        "qty": "120.40000000",
        "quoteQty": "48.84026000",
        "commission": "0.00006133",
        "commissionAsset": "BNB",
        "time": 1620897795111,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207832507,
        "orderId": 980586120,
        "orderListId": -1,
        "price": "0.39999000",
        "qty": "497.70000000",
        "quoteQty": "199.07502300",
        "commission": "0.00025315",
        "commissionAsset": "BNB",
        "time": 1620897886281,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 207832508,
        "orderId": 980586120,
        "orderListId": -1,
        "price": "0.40000000",
        "qty": "3142.90000000",
        "quoteQty": "1257.16000000",
        "commission": "0.00159865",
        "commissionAsset": "BNB",
        "time": 1620897886281,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210005557,
        "orderId": 988560664,
        "orderListId": -1,
        "price": "0.46916000",
        "qty": "1783.90000000",
        "quoteQty": "836.93452400",
        "commission": "0.83693452",
        "commissionAsset": "USDT",
        "time": 1620946151486,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210008659,
        "orderId": 988565404,
        "orderListId": -1,
        "price": "0.47263000",
        "qty": "1856.70000000",
        "quoteQty": "877.53212100",
        "commission": "0.87753212",
        "commissionAsset": "USDT",
        "time": 1620946156213,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210303850,
        "orderId": 989088978,
        "orderListId": -1,
        "price": "0.51366000",
        "qty": "438.00000000",
        "quoteQty": "224.98308000",
        "commission": "0.43800000",
        "commissionAsset": "DOGE",
        "time": 1620947008256,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210303851,
        "orderId": 989088978,
        "orderListId": -1,
        "price": "0.51366000",
        "qty": "791.90000000",
        "quoteQty": "406.76735400",
        "commission": "0.79190000",
        "commissionAsset": "DOGE",
        "time": 1620947008256,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210303852,
        "orderId": 989088978,
        "orderListId": -1,
        "price": "0.51366000",
        "qty": "791.90000000",
        "quoteQty": "406.76735400",
        "commission": "0.79190000",
        "commissionAsset": "DOGE",
        "time": 1620947008256,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210303853,
        "orderId": 989088978,
        "orderListId": -1,
        "price": "0.51366000",
        "qty": "791.90000000",
        "quoteQty": "406.76735400",
        "commission": "0.79190000",
        "commissionAsset": "DOGE",
        "time": 1620947008256,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210303854,
        "orderId": 989088978,
        "orderListId": -1,
        "price": "0.51366000",
        "qty": "82.50000000",
        "quoteQty": "42.37695000",
        "commission": "0.08250000",
        "commissionAsset": "DOGE",
        "time": 1620947008256,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210314125,
        "orderId": 989109658,
        "orderListId": -1,
        "price": "0.50700000",
        "qty": "175.70000000",
        "quoteQty": "89.07990000",
        "commission": "0.08907990",
        "commissionAsset": "USDT",
        "time": 1620947042630,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210314126,
        "orderId": 989109658,
        "orderListId": -1,
        "price": "0.50699000",
        "qty": "2717.60000000",
        "quoteQty": "1377.79602400",
        "commission": "1.37779602",
        "commissionAsset": "USDT",
        "time": 1620947042630,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210600756,
        "orderId": 989693156,
        "orderListId": -1,
        "price": "0.47744000",
        "qty": "1437.70000000",
        "quoteQty": "686.41548800",
        "commission": "1.43770000",
        "commissionAsset": "DOGE",
        "time": 1620948251305,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 210605202,
        "orderId": 989702997,
        "orderListId": -1,
        "price": "0.47842000",
        "qty": "1436.30000000",
        "quoteQty": "687.15464600",
        "commission": "0.68715465",
        "commissionAsset": "USDT",
        "time": 1620948281446,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212077113,
        "orderId": 994567469,
        "orderListId": -1,
        "price": "0.52883000",
        "qty": "1298.00000000",
        "quoteQty": "686.42134000",
        "commission": "1.29800000",
        "commissionAsset": "DOGE",
        "time": 1620970411707,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212077491,
        "orderId": 994568716,
        "orderListId": -1,
        "price": "0.52843000",
        "qty": "1010.60000000",
        "quoteQty": "534.03135800",
        "commission": "1.01060000",
        "commissionAsset": "DOGE",
        "time": 1620970418462,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212077492,
        "orderId": 994568716,
        "orderListId": -1,
        "price": "0.52851000",
        "qty": "288.30000000",
        "quoteQty": "152.36943300",
        "commission": "0.28830000",
        "commissionAsset": "DOGE",
        "time": 1620970418462,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212085477,
        "orderId": 994591607,
        "orderListId": -1,
        "price": "0.52413000",
        "qty": "1411.70000000",
        "quoteQty": "739.91432100",
        "commission": "0.73991432",
        "commissionAsset": "USDT",
        "time": 1620970500613,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212085478,
        "orderId": 994591607,
        "orderListId": -1,
        "price": "0.52413000",
        "qty": "850.00000000",
        "quoteQty": "445.51050000",
        "commission": "0.44551050",
        "commissionAsset": "USDT",
        "time": 1620970500613,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212085479,
        "orderId": 994591607,
        "orderListId": -1,
        "price": "0.52404000",
        "qty": "332.60000000",
        "quoteQty": "174.29570400",
        "commission": "0.17429570",
        "commissionAsset": "USDT",
        "time": 1620970500613,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212091539,
        "orderId": 994610111,
        "orderListId": -1,
        "price": "0.52217000",
        "qty": "1300.70000000",
        "quoteQty": "679.18651900",
        "commission": "1.30070000",
        "commissionAsset": "DOGE",
        "time": 1620970554383,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212093027,
        "orderId": 994613642,
        "orderListId": -1,
        "price": "0.52324000",
        "qty": "1285.10000000",
        "quoteQty": "672.41572400",
        "commission": "1.28510000",
        "commissionAsset": "DOGE",
        "time": 1620970564159,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212132871,
        "orderId": 994745888,
        "orderListId": -1,
        "price": "0.51423000",
        "qty": "2193.00000000",
        "quoteQty": "1127.70639000",
        "commission": "1.12770639",
        "commissionAsset": "USDT",
        "time": 1620971227320,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212132872,
        "orderId": 994745888,
        "orderListId": -1,
        "price": "0.51419000",
        "qty": "390.20000000",
        "quoteQty": "200.63693800",
        "commission": "0.20063694",
        "commissionAsset": "USDT",
        "time": 1620971227320,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212159085,
        "orderId": 994838323,
        "orderListId": -1,
        "price": "0.52464000",
        "qty": "2546.40000000",
        "quoteQty": "1335.94329600",
        "commission": "2.54640000",
        "commissionAsset": "DOGE",
        "time": 1620971749689,
        "isBuyer": true,
        "isMaker": false,
        "isBestMatch": true
    },
    {
        "symbol": "DOGEUSDT",
        "id": 212173954,
        "orderId": 994886589,
        "orderListId": -1,
        "price": "0.52627000",
        "qty": "1169.50000000",
        "quoteQty": "615.47276500",
        "commission": "0.61547277",
        "commissionAsset": "USDT",
        "time": 1620971991876,
        "isBuyer": false,
        "isMaker": false,
        "isBestMatch": true
    }
]

.net .net-core c# system.text.json
2021-11-23 21:22:05
1

Nejlepší odpověď

1

JSON dat je pole v tomto bloku kódu. Takže jste se snaží rekonstruovat na objekt. Pokud máte možnost rekonstruovat typ funkce, jako List<AccountTradeResponse> nebo IEnumrable<AccountTradeResponse>

2021-11-23 21:30:05

Díky, byl jsem hloupý myslím. Co o zpracování chyb?
nop

Já jsem použití zpracování chyb jako tady v serializaci nebo deserializaci procesů. I s globální zpracování chyb. Je to zdravější, že způsob,. Funkce může vrátit hodnotu null, i, pokud operace vyvolá chybu.
ikbalkazanc

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ý
..................................................................................................................