C# JSON数字键

C# JSON数字键,c#,json,C#,Json,很抱歉再次问这个问题,但我似乎不理解给出的答案:( 我需要使用JSON.net读取一些JSON "24h_rate":22.65826595," 当我把JSON放进我的类中时,它会使它变成无效的名称,总共24小时 我使用以下命令读取并反序列化JSON public class JsonWebClient { public async Task<System.IO.TextReader> DoRequestAsync(WebRequest req) {

很抱歉再次问这个问题,但我似乎不理解给出的答案:(

我需要使用JSON.net读取一些JSON

"24h_rate":22.65826595,"
当我把JSON放进我的类中时,它会使它变成无效的名称,总共24小时

我使用以下命令读取并反序列化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);
    }
}
公共类JsonWebClient
{
公共异步任务DoRequestAsync(WebRequest req)
{
var task=task.Factory.fromsync((cb,o)=>((HttpWebRequest)o)。BeginGetResponse(cb,o),res=>((HttpWebRequest)res.AsyncState)。EndGetResponse(res),req);
var结果=等待任务;
var resp=结果;
var stream=resp.GetResponseStream();
var sr=新系统IO.StreamReader(流);
返回sr;
}
公共异步任务getJsonAsync(字符串url)
{
HttpWebRequest req=HttpWebRequest.CreateHttp(url);
req.AllowreadStream缓冲=真;
var ret=等待数据同步(req);
var response=wait ret.ReadToEndAsync();
返回Newtonsoft.Json.JsonConvert.DeserializeObject(响应);
}
}
我需要做什么改变才能让这一切顺利进行


非常感谢。

仔细研究一下,我发现由于某种原因,您使用的反序列化程序无法“处理”以数字开头的键名,即使它是完全有效的JSON(请检查)

如果你改成这个

{ "rate_24h":22.65826595 }
它的工作原理是:

public class RootObject
{
    public double rate_24h { get; set; }
}

感谢@Ulugbek Umirov:


您的
rate\u 24h
属性应使用
[JsonProperty(“24h\u rate”)]
作为JSON.NET反序列化的属性。

您应该提到
rate\u 24h
属性应使用
[JsonProperty(“24h\u rate”)]
将由JSON.NET反序列化属性。感谢大家的帮助。我无法更改JSON,因为它来自一个我无法更改的设备。我如何“属性化属性”?抱歉,我是c#新手。