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

时间:2013-01-28 19:52:32

标签: 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);

这是类代码:

public class Worker
{

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

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

代码没有错误,但成功为空。

3 个答案:

答案 0 :(得分:5)

你错过了外部物体。

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; }
}

答案 1 :(得分:0)

我不熟悉那个库,但成功和结果看起来都是对象“result”的属性

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

编辑:好吧,不管它看起来像是一个范围问题。查看文档后,这是我的新建议:

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

然后是Json.Convert.Deserialize<Result>(json)

答案 2 :(得分:0)

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

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

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