【发布时间】:2018-03-18 14:34:15
【问题描述】:
我正在尝试将 JSON 数据保存到我的班级中。我尝试了不同的方法,但没有成功。 这是我的课:
class YoCurrency
{
public string Currency { get; set; }
public double high { get; set; }
public double low { get; set; }
public double avg { get; set; }
public double vol { get; set; }
[JsonProperty("vol_cur")]
public double vol_cur { get; set; }
public double last { get; set; }
public double buy { get; set; }
public double sell { get; set; }
public int updated { get; set; }
}
这里是JSON file.
尝试使用通用列表反序列化:
List<YoCurrency> a = JsonConvert.DeserializeObject<List<YoCurrency>>(json);
给出一个错误:
Newtonsoft.Json.JsonSerializationException: '无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.List`1[YoBitParser.YobitCurrency]' 因为该类型需要正确反序列化的 JSON 数组(例如 [1,2,3])。 要修复此错误,请将 JSON 更改为 JSON 数组(例如 [1,2,3])或更改反序列化类型,使其成为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像可以从 JSON 对象反序列化的数组或列表。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“btc_usd”,第 1 行,位置 11。
以这种方式反序列化:
var a = JsonConvert.DeserializeObject<YobitCurrency>(json);
不给出任何结果,因为所有类字段都得到 0 值
我也尝试使用这样的两个类:
class YoCurrency
{
public double high { get; set; }
public double low { get; set; }
public double avg { get; set; }
public double vol { get; set; }
[JsonProperty("vol_cur")]
public double vol_cur { get; set; }
public double last { get; set; }
public double buy { get; set; }
public double sell { get; set; }
public int updated { get; set; }
}
class YoPair
{
YoCurrency Currency { get; set; }
string Name { get; set; }
}
但它没有给出任何积极的结果。我尝试使用http://json2csharp.com 生成 c# 类,但它为每种货币生成一个类:
public class BtcUsd
{
public double high { get; set; }
public double low { get; set; }
public double avg { get; set; }
public double vol { get; set; }
public double vol_cur { get; set; }
public double last { get; set; }
public double buy { get; set; }
public double sell { get; set; }
public int updated { get; set; }
}
public class EthUsd
{
...
}
public class RootObject
{
public BtcUsd btc_usd { get; set; }
public EthUsd eth_usd { get; set; }
...
}
但我想这不是 50 或 500 对的好方法(或者我应该为每种货币创建一个唯一的类?)
所以请帮我反序列化这个 JSON,或者给我一些可以帮助我解决这个问题的信息。
【问题讨论】:
-
例如将您的 JSON 粘贴到 jsonviewer.stack.hu 中,然后查看您得到的对象。然后在你尝试的时候反序列化它
标签: c# json json.net json-deserialization