使用Newtonsoft反序列化JSON对象C#

使用Newtonsoft反序列化JSON对象C#,c#,json,json.net,C#,Json,Json.net,我需要反序列化以下内容: {"result":{"success":true,"value":"8cb2237d0679ca88db6464eac60da96345513964"}} 使用Newtonsoft.Json创建一个C#对象 WebClient wc = new WebClient(); var json = wc.DownloadString(url); Worker w = JsonConvert.DeserializeObject<Worker>(json); 代

我需要反序列化以下内容:

{"result":{"success":true,"value":"8cb2237d0679ca88db6464eac60da96345513964"}}
使用Newtonsoft.Json创建一个C#对象

WebClient wc = new WebClient();
var json = wc.DownloadString(url);
Worker w = JsonConvert.DeserializeObject<Worker>(json);

代码没有出错,但success和value为null。

我不熟悉该库,但success和result看起来都是对象“result”的属性

您是否尝试过
[JsonProperty(“result.success”)]

编辑:不管怎样,它看起来像一个范围问题。查看文档后,我的新建议如下:

public class Result{
 [JsonProperty("result")]
 public Worker result { get; set; }
}

然后改为
Json.Convert.Deserialize(Json)

您缺少外部对象

public class Worker
{
     [JsonProperty("result")]
     public Result Result { get; set; }
}

public class Result
{
    [JsonProperty("success")]
    public string Success { get; set; }

    [JsonProperty("value")]
    public string Value { get; set; }
}

您不需要任何类,可以使用
dynamic
关键字

string json = @"{""result"":{""success"":true,""value"":""8cb2237d0679ca88db6464eac60da96345513964""}}";

dynamic dynObj = JsonConvert.DeserializeObject(json);
Console.WriteLine("{0} {1}", dynObj.result.success, dynObj.result.value);

好主意。。。还是空的,谢谢!图中的“结果”需要被序列化。您也可以考虑将您的属性名大写,因为这是C.C中的标准约定。由于您已经在使用属性控制JSON序列化,因此不会影响这一点。我编辑了我的答案来说明我的意思。@luksan+1如果我希望C#类包含三个字段:结果、成功和价值,该怎么办?当我将JsonProperty属性设置为“result.success”或“result.value”时,它返回null。“有可能吗?”阿纳,我不知道我是否明白。也许可以尝试在这里用示例代码创建一个新问题。对不起,是我的错。我想问的是,您是否可以将JsonProperty值指定为两个级别,即“result.success”。这样不行,也许你知道一种方法。
string json = @"{""result"":{""success"":true,""value"":""8cb2237d0679ca88db6464eac60da96345513964""}}";

dynamic dynObj = JsonConvert.DeserializeObject(json);
Console.WriteLine("{0} {1}", dynObj.result.success, dynObj.result.value);