public class BClass
{
public class RClass
{
public string stjCd { get; set; }
public string lgnm { get; set; }
public string stj { get; set; }
public string dty { get; set; }
public List<object> adadr { get; set; }
public string cxdt { get; set; }
public string gstin { get; set; }
public List<string> nba { get; set; }
public string lstupdt { get; set; }
public string rgdt { get; set; }
public string ctb { get; set; }
public Pradr pradr { get; set; }
public string tradeNam { get; set; }
public string sts { get; set; }
public string ctjCd { get; set; }
public string ctj { get; set; }
}
public class AClass
{
public string id { get; set; }
public string consent { get; set; }
public string consent_text { get; set; }
public int env { get; set; }
public string response_code { get; set; }
public string response_msg { get; set; }
public int transaction_status { get; set; }
public string request_timestamp { get; set; }
public string response_timestamp { get; set; }
public RClass result { get; set; }
}
}
//COntroller
BClass.AClass btr = new BClass.AClass();
var lst = JsonConvert.DeserializeObject<BClass.AClass>(strresult);
btr.response_code = lst.response_code;
btr.response_msg = lst.response_msg;
btr.result.lgnm = lst.result.lgnm;
属性btr.result.lgnm=lst.result.lgnm;给出null值错误对象引用,该引用未设置为对象的实例。但是lst变量在接收到的响应中具有值。请提供的提示
您可以通过在代码中添加一行来解决此问题。
btr.result = new BClass.RClass(); //This one. You need to initialize instance before assigning anything to it.
btr.result.lgnm = lst.result.lgnm;
否则,您也可以为类A创建默认构造函数。
public AClass()
{
result = new RClass();
}
我建议你看看下面的网络资源,了解广泛用于c#语言的命名约定。
特性命名约定:https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-type-members
类命名约定:https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/names-of-classes-structs-and-interfaces
以这种方式分配不会产生空引用异常
RClass rclass=new RClass();
rclass.lgnm=lst.result.lgnm