我需要通过 CMS API 将此对象发送到控制器中:
{
"configData":[{"filename":"tttttttt"},{"year":"2024"},{"month":"03"}],
"unitData":[{"a":0,"b":1,"c":"asd"},{"a":0,"b":1,"c":"dsa"}]
}
然后控制器:
public string createAuditRels([FromBody] Dictionary<string,object> apiData)
{
var apiConfigData = apiData["configData"] as Dictionary<string,string>;
var filename = apiConfigData["filename"];
...
}
但我收到错误:
未将对象引用设置为对象的实例。
这种数据结构可能吗(对象类型中的多种数据类型)?
你的
configData
是一个对象数组,但不是一个对象。因此,当您尝试投射到 null
时,您会得到 Dictionary<string, string>
。
将其投射为
List<Dictionary<string, string>>
类型。
var apiConfigData = apiData["configData"] as List<Dictionary<string, string>>;
var filename = apiConfigData[0]["filename"];
或者,您可以为请求正文创建一个模型类。
public class AuditRelModel
{
public List<ConfigDataModel> ConfigData { get; set; }
public List<UnitDataModel> UnitData { get; set; }
}
public class ConfigDataModel
{
public string Filename { get; set; }
public string Year { get; set; }
public string Month { get; set; }
}
public class UnitDataModel
{
public int A { get; set; }
public int B { get; set; }
public string C { get; set; }
}
public string createAuditRels([FromBody] AuditRelModel apiData)
{
var filename = apiData.ConfigData[0].Filename;
}