这个问题几乎与here相同
我试着把答案翻译成C#,但我不是JSONMaven,有点迷路了。
我正在尝试从Kraken OHLC端点反序列化此JSON响应。Example response, click here
请求会拉回这个JSON:
{
"error":[],
"result":
{
"XXBTZEUR":
[
[1679269500,"26401.1","26401.1","26211.6","26243.9","26307.1","8.92959425",311],
[1679270400,"26253.1","26324.7","26060.2","26242.9","26212.0","33.15872129",520],
[1679271300,"26250.1","26276.8","26216.8","26260.4","26259.0","3.63710383",183]
],
"last":1679915700
}}
它是有效的JSON,但我不知道如何处理“last”字段,它似乎会抛出所有内容。
我以为我已经接近这些Class结构了,但无论如何,我的内部数组返回为null:
public class OHLCResponse
{
[JsonProperty(PropertyName = "error")]
public List<string> Error;
[JsonProperty("result")]
public OHLC Result { get; set; }
}
public class OHLC
{
//[JsonProperty("ohlc_pairs")]
public Dictionary<string, List<OHLCPair>> OHLCPairs { get; set; }
[JsonProperty("last")]
public int Last { get; set; }
}
public class OHLCPair
{
[JsonProperty("time")]
public int UnixDateStamp { get; set; }
[JsonProperty("open")]
public string Open { get; set; }
[JsonProperty("high")]
public string High { get; set; }
[JsonProperty("low")]
public string Low { get; set; }
[JsonProperty("close")]
public string Close { get; set; }
[JsonProperty("vwap")] //volume weighted average price
public string VWAP { get; set; }
[JsonProperty("volume")]
public string Volume { get; set; }
[JsonProperty("count")]
public string Count { get; set; }
}
我只是用一个标准库来调用它,这个库很高兴地将大多数其他对象处理成API中的类型安全类:
OHLCResponse cOHLCResponse = _CKraken.GetPublicWebResponse<OHLCResponse>("OHLC", param);
...实现:
result = (T)JsonConvert.DeserializeObject<T>(json);
结果,无论我如何尝试改变我的类型Classes总是一个空数组,因为我认为它无法处理“last”字段:
有人能给我指出正确的方向吗?很遗憾,我无法翻译上一个问题中的自定义反序列化器。提前感谢你,Dave。
2条答案
按热度按时间ut6juiuv1#
我认为可以通过为
OHLC
和OHLCPair
类实现自定义JSON转换器来实现这一点。1.使用相应属性的
JsonConverter
属性注册JsonConverter
。OHLCPairConverter
中,它旨在将last
字段以外的键值对转换为Dictionary<string, List<OHLCPair>>
,并将其分配给OHLCPairs
属性。OHLCPairConverter
中,它旨在将具有多个值和类型的数组(JArray
)转换为OHLCPair
示例。无论如何,对于
WriteJson
方法,您可以通过决定格式,属性及其要打印的值来实现编写JSON(序列化),而不需要 * System.Reflection *。我的方法似乎过于复杂。4jb9z9bj2#
你只需要一个简单的转换器
并更改OHLCPair类的JsonProperty属性