c#newtonsoft json.net在对象内部填充json对象,生成空值

c#newtonsoft json.net在对象内部填充json对象,生成空值,c#,.net,json.net,C#,.net,Json.net,我有这样的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":[],"resour

我有这样的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 loginDetail = new LoginDetail();

            Newtonsoft.Json.JsonConvert.PopulateObject(json, loginDetail);
 var a = loginDetail.subscriptions._6;

                Console.WriteLine("subs 6:" + a);
然后在主类上,我按如下方式填充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 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
获取登录详细信息

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); 
var json=
@“{'ok':true,'user_id':1,'name':'ceil bleu','name_f':'ceil','name_l':'bleu','email':'xxxx@email.com“,”登录“:”ceilbleu“,”订阅“:”{'1':'2037-12-31','4':'2037-12-31','5':'2037-12-31','6':'2037-12-31'},'categories':[],'groups':[],'resources':['Beli\/Perpanjang Keanggotan','Unsubscribe'];
var loginDetail=JsonConvert.DeserializeObject(json);

如果你能提供一个包含
json
字符串变量的函数,那就太棒了。我试过你的代码,它看起来对我有用。(@mjwills,您可以切断参考资料部分并将其粘贴为字符串变量,或者直接从文件中加载)@JleruOHep由于OP加载JSON的方式,它很可能无法工作。因此,我要求为
\u 1
使用“@JsonProperty(“1”)”装饰
订阅
属性,然后使用
jsoninvet.Deserialize