【发布时间】:2014-04-03 12:19:58
【问题描述】:
在反序列化以下对对象的响应时需要帮助。我是c#的新手,所以希望你不会严格判断)
{"getappdata":
{"general":
{"message":""},
"pool":
{"hashrate":6699750,
"workers":8873,
"basis_pps":0.132769,
"alt_pps":0,
"alt_bonus":0},
"ltc_exchange_rates":
{"USD":"13",
"EUR":"9.69"},
"user":
{"username":"overstorm",
"balance":4.63247039,
"hashrate":0,
"sharerate":0,
"invalid_share_rate":0},
"worker":[
{"name":"overstorm.1",
"hashrate":0,"active":0,
"monitoring":1},
{"name":"overstorm.2",
"hashrate":0,"active":0,
"monitoring":1}],
"earnings":
{"basis":[],
"alt":[],
"24h_total":0,
"24h_basis":0,
"24h_alt":0,
"24h_affiliate":0,
"48h_total":0,
"48h_basis":0,
"48h_alt":0,
"48h_affiliate":0}
}
}
我创建的类是这样的:
[Serializable]
public class GetAppData
{
[JsonProperty(PropertyName = "general")]
public General general { get; set; }
[Serializable]
public class General
{
[JsonProperty(PropertyName = "message")]
public string msg { get; set; }
[JsonProperty(PropertyName = "pool")]
public Pool pool { get; set; }
[JsonProperty(PropertyName = "ltc_exchange_rates")]
public Erates erates { get; set; }
[JsonProperty(PropertyName = "user")]
public User user { get; set; }
[JsonProperty(PropertyName = "worker")]
public IList<Worker> workers { get; set; }
[JsonProperty(PropertyName = "earnings")]
public Earnings earnings { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
[Serializable]
public class Msg
{
public string msg { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
[Serializable]
public class Pool
{
[JsonProperty(PropertyName = "hashrate")]
public int hashrate { get; set; }
[JsonProperty(PropertyName = "workers")]
public int Workers { get; set; }
[JsonProperty(PropertyName = "basis_pps")]
public double basis_pps { get; set; }
[JsonProperty(PropertyName = "alt_pps")]
public double alt_pps { get; set; }
[JsonProperty(PropertyName = "alt_bonus")]
public double alt_bonus { get; set; }
}
[Serializable]
public class Erates
{
[JsonProperty(PropertyName = "USD")]
public double USD { get; set; }
[JsonProperty(PropertyName = "EUR")]
public double EUR { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
[Serializable]
public class User
{
[JsonProperty(PropertyName = "username")]
public string Username { get; set; }
[JsonProperty(PropertyName = "balance")]
public double Balance { get; set; }
[JsonProperty(PropertyName = "hashrate")]
public double Hashrate { get; set; }
[JsonProperty(PropertyName = "sharerate")]
public double Sharerate { get; set; }
[JsonProperty(PropertyName = "invalid_share_rate")]
public double Invalid_Share_Rates { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
[Serializable]
public class Worker
{
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
[JsonProperty(PropertyName = "hashrate")]
public int hashrate { get; set; }
[JsonProperty(PropertyName = "active")]
public string active { get; set; }
[JsonProperty(PropertyName = "monitoring")]
public string monitoring { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
[Serializable]
public class Earnings
{
[JsonProperty(PropertyName = "basis")]
public IList<string> basis { get; set; }
[JsonProperty(PropertyName = "alt")]
public IList<string> alt { get; set; }
[JsonProperty(PropertyName = "24h_total")]
public string DayTotal { get; set; }
[JsonProperty(PropertyName = "24h_basis")]
public string DayBasis { get; set; }
[JsonProperty(PropertyName = "24h_alt")]
public string DayAlt { get; set; }
[JsonProperty(PropertyName = "24h_affiliate")]
public string DayAffiliate { get; set; }
[JsonProperty(PropertyName = "48h_total")]
public string TwoDaysTotal { get; set; }
[JsonProperty(PropertyName = "48h_basis")]
public string TwoDaysBasis { get; set; }
[JsonProperty(PropertyName = "48h_alt")]
public string TwoDaysAlt { get; set; }
[JsonProperty(PropertyName = "48h_affiliate")]
public string TwoDaysAffiliate { get; set; }
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
}
public T DeSerializeData<T>(string t)
{
return (new JavaScriptSerializer().Deserialize<T>(t));
}
}
这就是我尝试反序列化的方式:
GetAppData GAD = new GetAppData();
GAD = jss.Deserialize<GetAppData>(jsonString);
这就是我的 GAD 的样子
{JSON_Test.Form1.GetAppData}
请帮忙)谷歌已经厌倦了我)
【问题讨论】:
-
如果你打算用别的东西覆盖
GAD的值,你为什么要创建一个新的GetAppData?为什么不只是GetAppData appData = jss.Deserialize<GetAppData>(jsonString)? “这就是我的 GAD 的样子”是什么意思? -
“我的 GAD 长什么样”是对象的值。我在代码中有很多错误。我还在学习。对不起
-
“对象的价值”究竟是什么意思?你刚刚打电话给
ToString了吗?在调试器中检查它?我怀疑你会发现这只是因为你没有覆盖ToString...在调试器中展开对象,你将能够看到所有属性等。 -
我已经在调试器中检查过了。对象本身的值和我写的完全一样,它的所有属性都是空的。
标签: c# .net json serialization json.net