使用 Newtonsoft 反序列化 JSON 对象 C#
本文关键字:对象 JSON 反序列化 Newtonsoft 使用 | 更新日期: 2023-09-27 17:56:28
我需要反序列化以下内容:
{"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; }
}
代码不会出错,但成功和值为空。
你缺少外部对象。
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);
我不熟悉该库,但成功和结果看起来都是对象"结果"的属性
你试过[JsonProperty("result.success")]
吗?
编辑:好吧,不管它看起来像一个范围问题。查看文档后,这是我的新建议:
public class Result{
[JsonProperty("result")]
public Worker result { get; set; }
}
然后改为Json.Convert.Deserialize<Result>(json)
。