首页 > 解决方案 > 仅当输入为数组时才将类调用为数组

问题描述

我一直在创建一个算法,但我遇到了一个让我停下来的问题。问题源于以下 API 响应:

{
    "topic": "trade.BTCUSDT",
    "data": [
        {
            "symbol": "BTCUSDT",
            "tick_direction": "PlusTick",
            "price": 8098,
            "size": 328,
            "timestamp":"2020-03-30T02:21:06.000Z",
            "trade_time_ms":"1585534866418",
            "side":"Sell",
            "trade_id":"01e79e28-d1f4-59ac-b079-ca909606d91a"
        }
    ]
}

这最初并没有造成任何问题,因为我在使用 Newtonsoft.Json 包进行反序列化时将数据称为数组,并采用第一个变量来缓解问题。我正在合并所有回复,并根据他们的回复主题对其进行排序。此响应是唯一使用方括号而不是大括号保存数据的响应。为了解决这个问题,我尝试编辑获取;放; 命令如下,但出现堆栈溢出。

public Data[] data { get { if (_data != null) { return new[] { _data }; } else { return data; } } set { if (value.Length == 1) { _data = value[0]; } else { data = value; } } } 

我的问题是,get; set;如果只设置了一个元素,是否可以将 Data 类设置为数组?

标签: c#arraysjson

解决方案


而不是确定它是否是一个数组 - 为什么不像这样创建你的类,它会自动序列化:

public class Datum
{
    public string symbol { get; set; }
    public string tick_direction { get; set; }
    public int price { get; set; }
    public int size { get; set; }
    public DateTime timestamp { get; set; }
    public string trade_time_ms { get; set; }
    public string side { get; set; }
    public string trade_id { get; set; }
}

public class Trade
{
    public string topic { get; set; }
    public List<Datum> data { get; set; }
}

推荐阅读