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 Numeric Keys

稍微玩了一下,我发现由于某种原因,您使用的反序列化程序无法"处理"以数字开头的键名,即使它是完全有效的 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 反序列化。