JSON Numeric Keys
本文关键字:Keys Numeric JSON | 更新日期: 2023-09-27 17:56:09
很抱歉再次问这个问题,但我似乎不明白给定的答案:(
我需要使用 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);
}
}
我需要更改什么才能完成这项工作?
非常感谢。
稍微玩了一下,我发现由于某种原因,您使用的反序列化程序无法"处理"以数字开头的键名,即使它是完全有效的 JSON(http://jsonlint.com/检查)
如果您将其更改为此内容
{ "rate_24h":22.65826595 }
它的工作原理是:
public class RootObject
{
public double rate_24h { get; set; }
}
感谢@Ulugbek乌米罗夫:
您的rate_24h
属性应归属于[JsonProperty("24h_rate")]
,以便由 JSON.NET 反序列化。