[英]c# newtonsoft json.net populate json object inside object resulting null value
我有这样的json:
{"ok":true,"user_id":1,"name":"ceil bleu","name_f":"ceil","name_l":"bleu","email":"xxxx@email.com","login":"ceilbleu","subscriptions":{"1":"2037-12-31","4":"2037-12-31","5":"2037-12-31","6":"2037-12-31"},"categories":[],"groups":[],"resources":["<a href=\"http:\/\/aa.com\/member\/signup\" class=\"am-resource-link\" id=\"resource-link-link-7\">Beli\/Perpanjang Keanggotaan<\/a>","<a href=\"http:\/\/aa.com\/member\/profile\" class=\"am-resource-link\" id=\"resource-link-link-15\">Unsubscribe<\/a>"]}
名为LoginDetail.cs的类表示上面的json:
public class LoginDetail
{
public bool ok { get; set; }
public int user_id { get; set; }
public string name { get; set; }
public string name_f { get; set; }
public string name_l { get; set; }
public string email { get; set; }
public string login { get; set; }
public Subscriptions subscriptions { get; set; }
public object[] categories { get; set; }
public object[] groups { get; set; }
public string[] resources { get; set; }
}
public class Subscriptions
{
public string _1 { get; set; }
public string _4 { get; set; }
public string _5 { get; set; }
public string _6 { get; set; }
}
然后在主类上,我像这样填充json:
LoginDetail loginDetail = new LoginDetail();
Newtonsoft.Json.JsonConvert.PopulateObject(json, loginDetail);
var a = loginDetail.subscriptions._6;
Console.WriteLine("subs 6:" + a);
但是var a
会产生空值。
如何获取订阅数据?
如下更改您的班级结构
public class LoginDetail
{
public bool ok { get; set; }
public int user_id { get; set; }
public string name { get; set; }
public string name_f { get; set; }
public string name_l { get; set; }
public string email { get; set; }
public string login { get; set; }
public Subscriptions subscriptions { get; set; }
public object[] categories { get; set; }
public object[] groups { get; set; }
public string[] resources { get; set; }
}
public class Subscriptions
{
[JsonProperty("1")]
public string _1 { get; set; }
[JsonProperty("4")]
public string _4 { get; set; }
[JsonProperty("5")]
public string _5 { get; set; }
[JsonProperty("6")]
public string _6 { get; set; }
}
然后我将JSON字符串中的双引号替换为单引号(仅用于测试目的),然后使用JsonConvert.DeserializeObject<T>
获取登录详细信息
var json =
@"{'ok':true,'user_id':1,'name':'ceil bleu','name_f':'ceil','name_l':'bleu','email':'xxxx@email.com','login':'ceilbleu','subscriptions': {'1':'2037-12-31','4':'2037-12-31','5':'2037-12-31','6':'2037-12-31'} ,'categories':[],'groups':[],'resources':['<a href=\'http://aa.com/member/signup\' class=\'am-resource-link\' id=\'resource-link-link-7\'>Beli\/Perpanjang Keanggotaan<\/a>','<a href=\'http:\/\/aa.com\/member\/profile\' class=\'am-resource-link\' id=\'resource-link-link-15\'>Unsubscribe<\/a>']}";
var loginDetail = JsonConvert.DeserializeObject<LoginDetail>(json);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.