将响应写入Model对象时分配的Null值


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

最新更新