很抱歉再次提出这个问题,但我似乎并不理解给定的答案:(
我需要使用JSON.net阅读一些JSON。一些键以数字开头,例如
"24h_rate":22.65826595,"
当我将JSON放入http://json2csharp.com/创建我的类时,它会进入__invalid_name__24h_total。
我正在使用以下内容来阅读和反序列化JSON
public class JsonWebClient
{
public async Task<System.IO.TextReader> DoRequestAsync(WebRequest req)
{
var task = Task.Factory.FromAsync((cb, o) => ((HttpWebRequest)o).BeginGetResponse(cb, o), res => ((HttpWebRequest)res.AsyncState).EndGetResponse(res), req);
var result = await task;
var resp = result;
var stream = resp.GetResponseStream();
var sr = new System.IO.StreamReader(stream);
return sr;
}
public async Task<T> getJsonAsync<T>(string url)
{
HttpWebRequest req = HttpWebRequest.CreateHttp(url);
req.AllowReadStreamBuffering = true;
var ret = await DoRequestAsync(req);
var response = await ret.ReadToEndAsync();
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(response);
}
}
我需要做些什么来改变这项工作?
非常感谢。
答案 0 :(得分:0)
稍微玩了一下我发现你正在使用的解串器无法处理&#39;由于某种原因以数字开头的键名,即使它是完全有效的JSON(使用http://jsonlint.com/检查)
如果您将其更改为
{ "rate_24h":22.65826595 }
它有效:
public class RootObject
{
public double rate_24h { get; set; }
}
感谢@Ulugbek Umirov:
您的rate_24h
属性应归属于[JsonProperty("24h_rate")]
,以便通过JSON.NET进行属性反序列化。